工厂方法和抽象工厂联系之我见

一言以蔽之,工厂方法创建一个对象,抽象工厂创建一系列相关的对象。抽象工厂的实现基于工厂方法。

拿一个汽车工厂举例吧:

汽车是一种产品,我们要生产出汽车,可以使用工厂方法模式。但这里有一个问题,汽车不是凭空捏出来的,而是用轮胎、发动机、外壳等各种零件组装起来的,汽车和零件的关系如下:  

                                          n         组装         1

                                  零件 ——————————> 汽车

 

如图,汽车和零件的关系是1:n,有人说,既然用工厂方法可以生产出汽车,当然也可以用工厂方法生产出零件。 

诚然,技术上,用 1+n 个工厂方法生产出所有的汽车和零件是当然是可以的。但现实中,分工越来越细,依靠一个工厂生产出所有的产品是不可能的,那只会大大削弱工厂的核心竞争力。代码世界也是如此,如果通过一个方法创建出所有的零件并组装成汽车,那么这样的代码的可维护性、扩展性、重用性都将受到限制。

那么,汽车工厂的核心竞争力是什么?当然就是汽车!因为他不是轮胎工厂或者其他什么工厂,所以,汽车工厂就要专注于汽车的生产!那零部件怎么办呢?丢给另一个工厂吧——抽象工厂,让他去组织生产出所有的和汽车相关的零部件。然后,不同的抽象工厂(子类)就会按照需求组织一帮零部件工厂再使用工厂方法生产出零部件。

所以,工厂方法专注于最终产品的生产,只创建一个对象;而抽象工厂则专注于一系列相关对象的创建。

以上是一些浅解,不妥之处欢迎大家指摘评论

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值