《设计模式解析》摘录(8)
来源:互联网 发布:名校情结 知乎 编辑:程序博客网 时间:2024/05/17 06:09
Abstract Factory 模式
switch 语句本身常常说明:
1、需要多态行为; 2、存在职责错放。
应该考虑用一种更通用的解决方案,比如抽象代替 switch 语句,或者将职责赋予其他对象;
工厂是有一定职责的......而且是内聚的。
Abstract Factory 模式的3各关键的概念步骤:
1、找到变化并封装之;
2、优先使用对象聚集,而不是类继承;
3、针对接口而不是实现设计。
这个模式之所有称为 Abstract Factory,不是因为工厂是用每种情况有一个派生类的抽象类实现的,而是因为它要创建的东西本身是抽象定义的。工厂各种变化的实现如何选择,模式并没有具体规定。
决定需要哪个工厂对象实际上于确定使用哪一组对象是相同的。
不同应用程序都使用同一子系统。在这种情况下,工厂对象将传给子系统,告诉子系统将要使用哪些对象。此时,通常主系统知道子系统需要哪一组对象。在调用子系统之前,将实例化正确的工厂对象。
关键特征:
意图:需要为特定的客户(或情况)提供对象组;
问题:需要实例化一组相关的对象;
解决方案:协调对象组的创建。提供一种方式,将如何执行对象实例化的规则从使用这些对象的客户对象提取出来。
参与者与协作者:Abstract Factory 为如何创建对象组的每个成员定义接口。一般每个组都由独立的 ConcreteFactory 进行创建。
效果:这个模式将“使用哪些对象”的规则与“如何使用这些对象”的逻辑分离开来。
实现:定义一个抽象类来指定创建哪些对象,然后为每组实现一个具体类。可以用表或问题完成同样的任务。
Abstract Factory 模式为我们提供了一种新的分解方式——根据职责分解。使用这种方法可以将问题分解成:
1、谁在使用我们的特定对象;
2、谁来决定使用哪些特定对象。
在必须协调一组对象的创建时,可以应用 Abstract Factory 模式。它提供了一种方式,将如何执行对象实例化的规则从使用这些对象的客户对象提取出来。
1、首先,找出实例化规则,定义一个带接口的抽象类,其中的接口为每种需要实例化的对象提供一个方法;
2、然后,从这个类为每个组实现具体类;
3、客户对象使用具体工厂对象创建所需的服务对象。
- 《设计模式解析》摘录(8)
- 《设计模式解析》摘录(1)
- 《设计模式解析》摘录(2)
- 《设计模式解析》摘录(3)
- 《设计模式解析》摘录(4)
- 《设计模式解析》摘录(5)
- 《设计模式解析》摘录(6)
- 《设计模式解析》摘录(7)
- 《设计模式解析》摘录(9)
- 《设计模式解析》摘录(10)
- 《设计模式解析》摘录(11)
- 《设计模式解析》摘录(12)
- 《设计模式解析》摘录(13)
- 《设计模式解析》摘录(14)
- 《设计模式解析》摘录(15)
- 《设计模式解析》摘录(16)
- 《设计模式解析》摘录(17)
- 设计模式解析------笔记,摘录
- 放开顾虑
- 在Asp.net中为图像加入版权信息
- “四纠”“五补”战高温
- 指针详解
- CSS小甜点
- 《设计模式解析》摘录(8)
- 谁是真的英雄? csdn社区专家另类数据挖掘
- 博客搬家到CSDN
- Windows基本的数据类型
- 为什么开源产业不同于沃尔玛
- 咖啡只是一种习惯
- Migration Advice - AcString Type
- Primary Advices for Migration from ObjectARX 2004-6 to ObjectARX 2007-8
- C#精髓【月儿原创】第二讲 WMI完美秀出CPU编号厂商主频百分比等全部信息