《设计模式解析》摘录(8)

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、客户对象使用具体工厂对象创建所需的服务对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值