您的位置:首页 > 移动开发 > IOS开发

IOS设计模式学习(5)抽象工厂

2013-06-28 14:19 399 查看

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 结语

以上是所有内容,希望对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息