工厂方法要点在于不是直接创建对象,而是使用类或对象的工厂方法创建具体产品,并以抽象类型返回,(生产者自身不必是工厂方法)。
工厂方法的最初定义好像专注于让子类决定创建什么对象,有一种变种,抽象类使用工厂方法创建其子类或任何其它类的对象(NSNumber)。
何时使用工厂方法
1.编译时无法准确预期要创建的对象类。
2.类想让子类决定在运行时创建什么。
3.类有若干辅助类为其子类,而你想将返回那个子类这一信息局部化。(NSNumber)。
与直接创建新的具体对象相比,在以后类层次结构引入新的具体产品时不需要修改客户端代码,因为返回的任何具体对象的接口都跟客户端一直在用的接口相同。