工厂模式 -- 抽象工厂

有几点需要明确:

1. 客户端按族来创建产品(通过类图,可以看到)而工厂方法(简单工作)所对应的产品,是没有产品族的概念的,

    或者说,不是按产品族(产品功能)来创建产品的。

2. 这些产品不能抽象到一个接口或抽象类中

这是,需要使用抽象工厂来完成产品的创建。

 

在以下情况下应该考虑使用抽象工厂模式:

  • 一个系统不应该依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
  • 同属于同一个产品族的产品是在一起时用的,这一约束必须在系统的设计中体现出来。
  • 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。

开-闭原则要求一个软件系统在不修改原有代码的情况下,通过扩展达到增强功能的目的。与iyuyige设计到多个产品等级结构和多个产品族的系统,其功能的增强无外乎是增加新的产品族,和增加新的等级结构。

  • 增加新的产品族,只需要在每个产品等级结构中增加新的具体产品角色。然后加入新的具体工厂就可以了。
  • 增加新的产品等级结构,需要多出一个与现有的产品等级结构平行的新的产品等级结构。而且需要给每个工厂类添加新的工厂方法,而这是违背"开-闭"原则的。
  • 综合起来,抽象工厂模式以一种倾斜的方式支持增加新的产品,它为新产品族的增加提供方便,而不能为新的产品等级结构的增加提供这样的方便。

 

采用抽象工厂模式设计出的系统类图如下所示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值