iOS设计模式之工厂方法模式

工厂方法模式

基本理解

  • 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
  • 简单工厂的最大优点就是工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对客户端来说,去除了具体产品的依赖。但是它违背了开发封闭原则,如果新添加运算类则需要修改工厂类。
  • 工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断转移到了客户端代码来进行。如果想添加新的运算功能,则需要修改客户端。
  • 工厂方法也称为虚构造器。它适用于这种情况:
    一个类无法预期需要生成哪个类的对象,想让子类来制定所生成的对象。
  • 工厂方法克服了简单工厂违背了开放封闭原则的缺点,又保持了封装对象创建过程的优点。

何时使用工厂方法

  • 编译时无法确定预期要创建的对象的类
  • 类想让子类决定在运行时创建什么
  • 类若有若干辅助类为其子类,而你想将返回哪个子类这一信息局部化

在Cocoa Touch框架中应用工厂方法

  • NSNumber。我们在使用NSNumber时,我们可以通过alloc和init来创建NSNumber的实列,也可以同构numberWith:方法,其实numberWith:方法就是一个类的工厂方法。创建的相关细节,都由NSNumber的类工厂方法负责。

例子:

比如

NSNumber *twentySeven = [NSNumber numberWithInt:27];

其中的numberWithInt就是一个工厂方法。

原文地址:https://www.cnblogs.com/zhanggui/p/4714623.html