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 结语
以上是所有内容,希望对大家有所帮助。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>
今日头条
更多>>您可能感兴趣的文章
- ios学习笔记(二)xcode 4.3.2下实现基本交互
- Lexical or Preprocessor Issue 'xxx.h
- Android:实现TabWidget选项卡按钮在屏幕下方
- iPhone开发学习笔记006—— NSNotification自定义通知名
- 多线程之NSInvocationOperation
- ios开发问题:添加库和复制其它工程文件编译错误问题
- iphone开发之object c基础一定义接口
- (iPhone/iPad开发)presentViewController相应方法在SDK5.0前后
- iPhone应用开发之十一:常用的三种动画表现效果
- Memory on the iPhone