工厂模式的概念
工厂模式也称为虚构造器,它适用于一个类无法预期生成那个类对象,想让其子类来指定所生成具体对象。iOS中存在许多的类工厂模式的设计方式,丰富了类的实现模式,父类可以声明多种初始化方法提供给子类,子类按照自身需求可以动态的调用父类的方法完成特定的初始化操作。
工厂模式的分类
简单工厂模式
简单工厂又被称作静态工厂方法模式,其不属于23种GOF设计模式之一,是工厂方法的特殊实现,专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。
工厂方法模式
工厂方法使用OOP的多态性,将工厂和产品都抽象出一个基类,在基类中定义统一的接口,然后在具体的工厂中创建具体的产品。
工厂方法模式相比简单工厂模式:
- 工厂方法模式克服了简单工厂模式违背开放-封闭原则的缺点,保持了封装对象创建过程的优点。
- 要更换对象时,无论用简单工厂模式还是工厂方法模式,都可以不用做大的改动,就可以实现,降低客户程序与产品对象的耦合。
- 工厂方法模式是简单工厂模式的进一步抽象和推广,缺点是,每加一个产品,就要加一个产品工厂的类,增加了开发量。
抽象工厂模式
抽象工厂提供一个固定的接口,用于创建一系列有关联或相依存的对象,而不必指定其具体类或其创建的细节。客户端与从工厂得到的具体对象之间没有耦合。
抽象工厂的使用场景:
- 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
- 这个系统有多于一个的产品族,而系统只消费其中某一产品族。
同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。 - 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
参考:完整项目资料下载