Abstract factory小议

 

                 设计模式之创建型---Abstract factory

在谈正题之前,我们来看一个现实生活中的例子,我们去买一台电视,那我们必然去找一家像样的大商场买一台现成的货物,而不可能先去屏幕厂家定做屏幕,然后去遥控器厂家买遥控器,再然后显像管,外壳,散热器……这样做是很没有效率的,作为消费者,我们一般喜欢由商家来为我们搭配这一切,而我们仅仅需要知道产品的性能以及大概效果就可以了。

客户不需要知道某品牌的具体细节,甚至都不需要知道具体是什么样的零件构成了这个品牌,而只需要从商场中根据需要来选择品牌就可以了,而商场则负责了品牌的组建,并将这些品牌提供给客户。

还有,就算客户喜欢自己装电视,而四处奔波去买零件,但是装起来的效果肯定没有原装的好,因为原装配件通常都会互相协作依赖,从而让电视发挥最大效力。

其实说到这里,大家也应该看出来这个例子跟主题的关系了,作为创建型设计模式Abstract factory,它的原理其实跟这个例子差不多。

1.首先我们来了解下Abstract factory的意图:是创建一系列相关或相互依赖的对象的接口,而无须指定他们具体的类。放到上面的例子就是厂商提供了品牌,但是他们不必要告诉客户组成品牌的零件都来自哪里。

2.接下来,讨论下为什么要使用Abstract factory,我以为,如果在一个程序中,需要实现一个支持多个类,特别是相互依赖的类组成的实例对象,就不应该硬编码它的结构,因为一旦发现需要实现不同风格的对象,就很难去改变它。我们应该做的是将不同风格的组成分别编写为单独的类,我们称它为工厂类,而其中的组成都编写为抽象类我们可以称它为零件抽象类,而工厂类就通过获取零件抽象类的实例子类来构建出不同的风格反馈给程序员,就好像买电视,如果你买的是一个品牌,不满意你可以直接调换,但是如果你是自己组装的电视,想改风格就必须把电视拆了重新买零件了。

3.可以看出,当你的系统要由多个互相依赖的产品类来配置时,你就可以考虑使用Abstract factory的类创建方式。总之,它分离了具体的类,将客户与类的实现分离,客户通过抽象接口操纵实例,便于客户控制。当然,它的最大优点还是便于产品的风格交换。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值