IOS设计模式学习(5)抽象工厂
1 前言
抽象工厂提供了一个接口,用于创建一系列有关联或者相互依存的对象,而不必指定其具体类或其创建的细节。客户端与从工厂得到的具体对象之间没有耦合。
2 详述
2.1 简述
Client只知道AbstractFactory和AbstractProduct,每个工厂类中,结构与实际操作的细节按照黑箱对待。甚至产品也不知道谁将负责创建他们。只有具体工厂知道为客户端创建什么,如何创建。这个模式很多时候它都用工厂方法模式来实现。工厂方法把实际的创建过程推迟到重载它的子类中。
抽象工厂模式常与原型模式,单例模式和享元模式等其他设计模式一起使用。
2.2 抽象工厂与工厂方法的区别
抽象工厂:
(1)通过对象组合创建抽象产品;
(2)创建多系列产品;
(3)必须修改父类的接口才能支持新的产品。
工厂方法:
(1)通过类继承创建产品;
(2)创建一种产品;
(3)子类化创建者并重载工厂方法以创建新产品。
2.3 类簇
类簇是基础框架中一种常见的设计模式,基于抽象工厂模式的思想。它将若干相关的私有具体工厂子类集合到一个工友的抽象超类之下。例如:数 包含了各种数值类型的完整集合,如字符,整数,浮点数和双精度数。这些数值类型是数的自己。所以NSNumber自然成为这些数子集的超类型(super-type)。
类簇是抽象工厂的一种形式。比如,NSNumber是一个高度抽象的工厂,而NSCFBoolean和NSCFNumber是具体工厂子类。
2.4 再次对比抽象工厂和工厂
抽象工厂被其多个具体工厂类型共有的抽象工厂类型。如果抛开“抽象”一词,“工厂”通常是指“具体”工厂,而且,它也没有工厂方法的意思。
有时候,一开始在设计中使用具体工厂,而其后将其重构为使用多个具体工厂的抽象工厂。
3 结语
以上是所有内容,希望对大家有所帮助。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>