前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之工厂模式(五)

设计模式之工厂模式(五)

作者头像
程序员小跃
发布2019-12-25 17:20:25
3340
发布2019-12-25 17:20:25
举报
文章被收录于专栏:程序员小跃

前面几篇,我们已经把简单工厂、工厂方法模式以及抽象工厂模式一一进行了拆解,一步步让我们学会了这几个工厂模式,哦,对了,简单工厂并不算真正意义上的工厂。

我们通过吃披萨的启发,对创建披萨进行了改造;又发展了远景,对披萨加盟有了浓厚的兴趣,并开了很多加盟店;又对材料进行了严格把控,才有了现在的规模。工厂模式,就这样一层层地展现在我们面前。

首先,来看下上次遗留的抽象工厂模式的问题。抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道(或关心)实际产出的具体产品是什么。这样一来,客户就从具体的产品中被解耦。让我们看看类图来了解其中的关系。

这是一张相当复杂的类图:让我们从PizzaStore的观点来看一看它

工厂方法是不是潜伏在抽象工厂里面?

我们注意到,抽象工厂的每个方法实际上看起来都像工厂方法。每个方法能被声明称抽象,而子类的方法覆盖这些方法来创建某些对象。

所以,抽象工厂方法经常以工厂方法的方式实现,这很有道理,对吧?抽象工厂的任务是定一个负责创建一组产品的接口。这个接口内的每个方法负责创建一个具体产品,同时我们利用实现抽象工厂的子类来提供这些具体的做法。所以,在抽象工厂中利用工厂方法实现生产方法是相当自然的做法。

比较工厂方法和抽象工厂

因为书中用图描绘了对比的关系,小编力求同书本结合,故在此把书本中的类图贴出来,大家不要介意了。

设计箱内的工具

还是按照之前的套路,总结下工具箱内新增的工具吧

  • OO基础 抽象、封装、继承、多态
  • OO原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 为交互对象之间的松耦合设计而努力 依赖抽象,不要依赖具体类(我们有了一个新原则,知道我们尽可能地让事情保持抽象)
  • OO模式 『策略模式』、『观察者模式』、『装饰者模式』 『抽象工厂模式』提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类 『工厂方法模式』定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类
结尾

很高兴,听过这么多的篇幅,大家能和我坚持学完。小编知道,针对这个工厂模式,写的不那么尽如人意。篇幅太多,描述不清,可能小编自己的想法加的也不够多,被书本牵着鼻子走了。

所以,针对工厂模式,包括后面更多的模式,小编还是会做下改变。之前说过小编会先总体理解一遍再进行编写,以后可能小编还得列一个大纲先,然后和大家一起学习,一起进步。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奔跑吧攻城狮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工厂方法是不是潜伏在抽象工厂里面?
  • 比较工厂方法和抽象工厂
  • 设计箱内的工具
  • 结尾
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档