读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. Debug模式下加载文件,运行程序异常的慢
  2. 服务级后门自己做——创建服务
  3. [导入]关于怎样通过xslt向.NET扩展函数传递OuterXml属性
  4. 修改oracle用户权限,详解如何实现Oracle修改用户权限和角色
  5. LeetCode 2196. 根据描述创建二叉树(哈希)
  6. 计算机按应用可分为几类,计算机按性能可以分为哪几类
  7. C语言课后习题(28)
  8. android 内容提供其,Android内容提供者
  9. STM32使用LWIP库新建tcp_sever
  10. KUDU数据导入尝试一:TextFile数据导入Hive,Hive数据导入KUDU
  11. C++基础——C++风格的类型转换(static_cast、const_cast、dynamic_cast、reinterpret_cast)
  12. 项目讨论:本地手机经销商怎样用移动站点开展本地营销?
  13. Intel 8042键盘控制器详细介绍
  14. linux系统怎么拨号上网,如何用 Linux 拨号上网
  15. ukf实测信号的预测 matlab,无迹卡尔曼滤波UKF无线传感器网络定位跟踪matlab源码实现.pdf...
  16. 如何写好一篇技术博客
  17. 车型代号对照表_2017年最新主机厂OEM车型代号对照表
  18. 《开源安全运维平台:OSSIM最佳实践》内容简介
  19. 小程序-云开发:云开发是什么?
  20. html用九张图片做出九宫图,用ps如何将九张照片做成九宫格?

热门文章

  1. python前后端分离前端权限_Linux上搭建前后端分离项目
  2. 60v5g无刷电机矢量控制器_完成一个最小FOC矢量控制系统所需的基本模块和功能配置...
  3. java 采样_java 采集数据
  4. centos g++ 升级_今夏最潮装备来了!G-SHOCK推出seethru 冰韧系列
  5. php邮箱验证laravel接口,Email认证 | Laravel 中文文档 - 码农教程
  6. win8.1 php mysql,win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
  7. python 切换环境_python 使用 pyenv 多环境切换
  8. centOS 安装mysql5.6
  9. 让你直呼哇塞的API管理神器!
  10. 醒醒!Python已经支持中文变量名啦!