读HeadFirst的工厂有一下几条小感悟,这几条是我之前看书时记录下来的,这次又复习了下。其实创建类型的模式的主要作用在于集中创建对象,用时调用所需,以及在相似类型的对象创建的便捷性提供了帮助。

其实简单工厂不是设计模式,更像是一种编程习惯!

store为了将pizza分成双倍芝士或者全素型比萨
orderPizza只是将抽象的pizza进行操作,比如准备,烧烤,切片,装盒操作,与具体的pizza类完全解耦
做哪种比萨是由具体的比萨店来决定的(纽约比萨店还是芝加哥比萨店)

工厂方法
abstract Product factoryMethod(String type)
1.工厂方法为抽象的,所以依赖子类来处理对象的创建
2.必须返回一个产品!
3.工厂方法将客户和时机创建产品的代码分离!

工厂方法的元素:

创建者(Creator):PizzaStore,NYPizzaStore,ChicagoPizzaStore
不需要知道在制造那个具体产品!
能够产生产品的类为具体创造者(createPizza)

产品类(Product):Pizza,NYStyleCheesePizza,NYStyleVeggiePizza
,ChincagoStyleVeggiePizza,ChincagoStyleCheesePizza
实际制造!
能够产生产品的类为具体创造者(createPizza)

工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。
工厂方法让类把实例化推迟到子类

当你直接实例化一个对象时,就是依赖它的具体类,不使用工厂模式,将大大依赖具体类!导致耦合度极大!

设计原则:要依赖抽象,不要依赖具体类!【依赖倒置原则】
依赖倒置知道方针:变量不可以持有具体类的引用:工厂避免这样的做法!
不要让类派生自具体类(派生自一个抽象)
不要覆盖基类已经实现的方法!

抽象工厂:提供一个借口,用于创建相关或依赖对象的家族,而不需要指定具体类!
抽象工厂允许客户使用抽象的接口来创建相关产品,保证客户从具体的产品中解耦
【原料工厂就如同这个一样!】

客户端只需要知道一个抽象工厂,一个抽象产品 ,实际上是使用具体工厂实现具体产品(NYPizzaStore)
,同时这个具体产品是继承自抽象产品的!

抽象工厂与工厂:都是通过子类来创建对象!客户只需要知道所使用的抽象类即可!

转载于:https://www.cnblogs.com/zzjanson/archive/2012/05/29/Design-Model-Factory2.html

设计模式--依然创建者相关推荐

  1. 设计模式系列-创建者模式

    为什么80%的码农都做不了架构师?>>>    一.上篇回顾 上篇我们主要讲述了抽象工厂模式和工厂模式.并且分析了该模式的应用场景和一些优缺点,并且给出了一些实现的思路和方案,我们现 ...

  2. 设计模式 之 创建者

    很久没写设计模式学习笔记了,今天无聊,随便把以前看的模式的都写下. 先把代码帖上来吧. 这个模式,是模拟 西山居的一款游戏,剑侠情缘 来写的,呵呵,当然,该游戏到底是怎么设计的,我是不知道,只是作为一 ...

  3. 设计模式之创建者模式

    设计模式的基本原则 设计模式体现的是软件设计的思想,而不是软件技术,它重在使用多态与抽象类来解决各种问题 开放封闭原则:类的改动是通过增加代码进行的,而不是修改源代码 依赖倒置原则:依赖于抽象(接口) ...

  4. 【设计模式】创建者模式(单例工厂原型建造者)

    文章目录 1.单例设计模式 1.1 单例模式概述 1.2 单例模式的实现 1.2.1 饿汉式(静态变量方式) 1.2.2 饿汉式(静态代码块方式) 1.2.3 懒汉式(线程不安全) 1.2.4 懒汉式 ...

  5. 学了那么多年设计模式依然不会用!那可真蠢!

    什么是设计模式? 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用. 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是 ...

  6. java设计模式-Builder创建者模式

    问题分析: Builder模式是一步一步创建一个复杂对象的创建型模式.该模式是为了将构建复杂对象的过程和他的部件解耦,使得构建过程和部件的表示隔离开来. Builder模式 主要用于"构建一 ...

  7. java 创建者设计模式_Java设计模式之创建者模式分享热爱编程,程序人生

    PS:今天的23中设计模式中的创建者方式,至此告一段落.我今天带来的技术分享为创建者模式以及原型模式.当然在Java中这两种方式很常见,只不过我们写的次数确实有点低而已,但是这不是我不学它的借口!!! ...

  8. Java设计模式之创建者模式

    1 简介 在最近看的一篇文章中,提到了关于新年目标制定的方式的实践,觉得不错,附在上图.尤其是目标一定要符合SMART模式, 为了-,通过-,截止-前,实现- 这个句式很有力量. 在日常编程实践中,对 ...

  9. 【设计模式】 - 创建者模式 - 工厂方法模式、抽象工程模式

    工厂方法模式.抽象工程模式 前言 工厂方法模式. 抽象工程模式 1. 简单工厂模式(不属于GOF的23种经典设计模式) 1.1 结构 1.2 实现 缺点 2. 工厂方法模式 2.1 结构 2.2 实现 ...

最新文章

  1. mysql binlog恢复sql_binlog2sql实现MySQL误操作的恢复
  2. TessorFlow学习 之 序言
  3. Java中 EvenQueue.invokeLater用法
  4. 实战项目一:爬取西刺代理(获取代理IP)
  5. Flutter Provider 异步通信、Provider状态管理
  6. prim算法适用条件_内部排序算法的比较及应用
  7. 编程:从前有一个傻呆程序员,老婆交给他一项任务,他办了四次才满意
  8. Python基本的数据结构-序列
  9. oracle 查询月份
  10. Java全国计算机等级考试二级笔记---操作题部分
  11. 【九天教您南方cass 9.1】01 安装Cad和Cass9.1
  12. 物联网概论(IoT)_Chp5 物联网通信 Zigbee/蓝牙/UWB/WLAN/WiMax
  13. linux 远程启动WebLogic
  14. Unity+高通Vuforia SDK——AR
  15. 5,15-二(3,4,5-三(三丙氧苯基)卟啉(BTPPP),[5,15-二乙炔基-10,20-二(3,4,5-三(十六烷氧基)苯基)卟啉]锌(DBTCPP-Zn)齐岳生物供应
  16. Markdown优雅地插入图片
  17. PS设置图片部分透明
  18. E18-D80NK拆解
  19. pci总线定时协议_PCI协议
  20. 利用matlab做一个不定二重积分的计算

热门文章

  1. 【linux】 redhat中设置时区
  2. java 弹出下载_java如何实现下载弹出的对话框
  3. html 换行符_每个非网站开发人员都应该了解的21个HTML基础知识
  4. Apache Flink 读取本地文件,处理数据,导入ES
  5. 编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码
  6. 5年 Python 功力,总结了 10 个开发技巧
  7. 吴恩达 deeplearning.ai 经典总结:28 张精炼图+思维导图(附下载链接)
  8. 阻止地图的放大和缩小_Arcgis画地图详细步骤(真的!!)
  9. 计算机安全靠,市计算机:网络安全进校园,网络安全靠人人
  10. springboot有什么好的方案实现 数据实时更新吗?_使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控...