第1条 考虑用静态工厂方法代替构造器

来源:互联网 发布:91prom软件下载 编辑:程序博客网 时间:2024/06/18 08:41

静态工厂方法不同于设计模式中的工厂方法,静态工厂方法一个常用的案例就是单例模式。

静态工厂方法与构造器比较有以下优点:

  1. 静态工厂方法有适当的名称,方便调用者识别,这在构造器有多个入参且构造器种类比较多时,该优点会更加明显。
  2. 静态工厂方法被调用时,不必每次都创建新对象,比如Boolean.valueOf(boolean),当创建对象代价很高时,静态工厂方法可以明显提高性能。
  3. 静态工厂方法可以根据不同入参或者不同工厂方法返回任何子类型,这提高了程序的灵活性,比如随着版本的不同工厂方法可以提供不同的实现,但不影响客户端;也可以减少系统的接口数量,比如 Collections Framework API.
  4. 静态工厂方法返回的对象所属的类可以不在包含该静态工厂方法的类中,比如JDBC。
  5. 静态工厂方法在创建参数化类型实例时可以根据类型推导使代码更加简洁,比如
     public static <K,V> HashMap<K,V> newInstance(
      return new HashMap<K,V>();
     )

静态工厂方法的缺点:

  1. 实用静态工厂方法意味着不能包含共有的或受保护的构造器,也就是说不能被实例化,但这鼓励实用复合代替继承。
  2. 静态工厂方法与普通静态方法相同,在生成doc说明文档时没有明确标识出来,(但可以在类注释中补充说明)。


0 0
原创粉丝点击