Effective Java重点笔记--第一条 考虑使用静态工厂方法代替构造器

  • 静态工厂方法定义:
    返回类实例的静态方法,与设计模式中的工厂方法模式不同。
  • 优点:
    1. 静态工厂方法有名称。我们可以通过不同的名称来区分参数列表不同的构造器,这样显然更加的清楚,便于用户理解。
    2. 不必在每次调用时创建一个新的对象。重复利用对象,避免重复创建相同的对象,提升性能。
    3. 可以返回类型的任何子类型的对象。我们在选择返回对象的类型时,有了更大的灵活性。适用于基于接口的的框架。
    4. 使代码变得更加简介。如:
      <code>Map<String,List<String>> m=new HashMap<String,List<String>>();
      //可更换为
      Map<String,List<String>> m=HashMap.newInstance();</code>
  • 缺点:
    1.** 一个类如果不含有public或者protect的构造器,就不能被子类继承。**
    2.静态工厂方法与普通静态方法没有任何区别,在API文档中不会被明确标识出来。所以在查询使用静态工厂方法创建实例对象时,会十分困难。
  • 静态工厂方法的管用名称:
  1. ValueOf——类型转换方法,返回与参数具有相同值的实例。
  2. of——同上
  3. getInstance——返回通过参数描述的实例,对Singleton来说,永远返回唯一的实例。
  4. newInstance——确保返回的每个实例都与其他实例不同
  5. getType——像getInstance一样,但是在工厂方法处于不同的类中的时候使用。
  6. newType——像newInstance一样,但是在工厂方法处于不同的类中的时候使用。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容