获取类的实例有两种方法:

1. 提供一个公有的构造器(最常用)。

2. 提供一个公有的静态工厂方法(static factory method)。

// 静态工厂方法示例
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}

静态工厂方法的优势:

1. 有名称。当一个类需要多个带有相同签名(方法签名 = 方法名 + 参数列表)的构造器时,就用静态工厂方法代替构造器,并且慎重选择名称以便突出它们之间的区别。

2. 不必每次调用它们的时候都创建一个新对象。

3. 可以返回原返回类型的任何子类型的对象。

4. 在创建参数化类型实例的时候,使代码变得更加简洁。类型推导:比如HashMap<K,V>里的K和V就是参数,如果参数一多,每次new的时候都要写一遍,显得冗长。

静态工厂方法的缺点:

1. 类如果不含公有的或者受保护的构造器,就不能被子类化。

2. 与其他的静态方法实际上没有任何区别。

课外链接:服务提供者框架。有三个重要组件:

1. Service Interface:提供者实现。

2. Provider Registration API:注册有哪些provider。

3. Service Access API:调用provider的service。

一个可选组件:Service Provider Interface。

详解:https://blog.csdn.net/zl3450341/article/details/7227197

最新文章

  1. rsyslog配置报错解决
  2. TopHat
  3. vim 命令加解密文件
  4. 修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题
  5. 78 mount 挂载Linux系统外的文件。
  6. 分享Kali Linux 2016.2第48周镜像文件
  7. 使用PowerShell向SharePoint中写入数据
  8. 边工作边刷题:70天一遍leetcode: day 88
  9. Optimizing shaper — hashing filters (HTB)
  10. python(6)时间戳和北京时间互转,输出当前的时间和推到七天前的日期
  11. windows创建桌面快捷方式的VBA脚本
  12. FastScroll(2)不分组的listview 打开fastscroll的分组提示功能
  13. Android(java)学习笔记151: SurfaceView使用
  14. 记一次 nginx 504 Gateway Time-out
  15. 一、selenium 环境搭建
  16. java 中int与integer的区别
  17. mysql 设置 innodb_print_all_deadlocks=ON, 保存死锁日志
  18. JAVA框架 Mybaits 动态sql
  19. Python之文件与目录操作(os、zipfile、tarfile、shutil)
  20. 深入了解volatile

热门文章

  1. Codeforces Round #414 A. Bank Robbery
  2. libcurl 使用
  3. 小Y的轮回之路——攒机装机、B150装win7
  4. css display属性详解
  5. 证书制作 z
  6. mysql获取表列信息、主键信息
  7. 《C++ Primer Plus》读书笔记之二—复合类型
  8. 设计模式:组合(Composite)模式
  9. hashcode方法 简析
  10. Hibernate映射Map属性