第一条,考虑静态工厂类代替构造器

2017-12-19  本文已影响0人  山楂mm

用静态工厂类代替构造器有4个优点:

  1. 静态工厂类有自己的名称,可以望文生义,清楚创建实例的错用
  2. 采用静态工厂类创建实例的时候,可以不总创建新的实例。比如单列模式
  3. 静态工厂类创建实例可以返回它们的子类型,可以不关心实例的具体实现。例如:
 public class Fruit {
     private Fruit(){}

     public static Fruit(int color) {
         if(color == 0) {
            return new Apple();
         } else {
            return new Orange();
         }
     }
}
  1. 采用静态工厂类创建实例可以使代码更简洁。例如可以简化复杂的API。

用静态工厂代替构造器有2个缺点

  1. 由于没有公有的或者受保护的构造函数,该类不能被子类化,也就是该类不能被继承。
  2. 由于静态工厂类和普通类没有区别,所有要查明该类是如何实例化的比较困难。
上一篇 下一篇

猜你喜欢

热点阅读