前言

创建模式
创建型模式( Creational pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。 为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则
创建型设计模式的目标是将一个软件与其对象的创建、组合、表示分离开来,其目的是在哪个对象被创建、谁负责创建对象、怎样创建对象、何时创建对象方面增强灵活性
该模式的主要任务是为客户程序创建对象,而不是由客户程序直接初始化对象

简单工厂模式

模式动机
只需要知道水果的名字则可得到相应的水果

◆使用简单工厂模式设讣一个可以创建不同几何形状( Shape)的绘图工具类,如可创建圆形( Circle)、矩形( Rectangle)和三角形(Triangle)对象,每个几何图形均具有绘制draw()和擦除 erase()两个方法,绘制类图并编程实现

1.工厂方法模式

模式定义
工厂方法模式( Factory Method Pattern)又称为工厂模式,也叫虚拟构造器( Virtual constructor)模式或者多态工厂( Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

2.模式结构


工厂方法模式包含如下角色
Product:抽象产品
Concrete Product:具体产品
Factory:抽象工厂
ConcreteFactory:具体工厂

3.模式分析

1.工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了面向对象的多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。 这个核心类仅仅负责给出具体工厂必须实现的接口,而不负责哪一个产品类被实例化这种细节,这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。
2.当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体产品对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,**很好地符合了“开闭原则”。**而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好。工厂方法模式退化后可以演变成简单工厂模式。

3.工厂方法模式的优缺点

工厂方法模式的优点
1.在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节,用户只需要关心所需产品对应的工厂,无须关心创建细节,甚至无须知道具体产品类的类名。
2.基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。它能够使 工厂可以自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部。 工厂方法模式之所以又被称为多态工厂模式,是因为所有的具体工厂类都具有同一抽象父类。
3.使用工厂方法模式的另一个优点是在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其他的具体工厂和具体产品,而 只要添加一个具体工厂和具体产品就可以了。 这样,系统的可扩展性也就变得非常好,完全符合“开闭原则
工厂方法模式的缺点
1.在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,有更多的类需要编译和运行,会给系统带来一些额外的开销
2.由于考虑到系统的可扩展性,需要引入抽象层,在客户端代码中均使用抽象层进行定义,增加了系统的抽象性和理解难度,且在实现时可能需要用到DOM、反射等技术,增加了系统的实现难度。

4.实例





软件设计模式及体系结构之工厂方法模式相关推荐

  1. 跟着学设计模式 (1)— 工厂方法模式

    跟着学设计模式 (1)- 工厂方法模式 前提 工厂方法模式介绍 实现模拟发奖多种商品为例 代码实现 工厂模式优化代码 前提 好看的代码千篇一律,恶心的程序升职加薪. 谁发明了设计模式? 设计模式的概念 ...

  2. 北风设计模式课程---2、工厂方法模式

    北风设计模式课程---2.工厂方法模式 一.总结 一句话总结: 工厂方法模式相对于简单工厂模式只是修改了 [工厂核心类-将它变成接口],具体的创建产品的工作交给[工厂核心类的子类] 满足了开闭原则:不 ...

  3. 对设计模式的总结之工厂方法模式和抽象工厂模式

    前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓 ...

  4. 第二部分:二十三种设计模式解读——什么是工厂方法模式

    二十三种设计模式解读--什么是工厂方法模式 author:陈镇坤27 日期:2022年2月10日 修改日期:2022年6月23日 文章目录 二十三种设计模式解读--什么是工厂方法模式 一.工厂方法模式 ...

  5. Java设计模式【之】工厂方法模式【场景:制作咖啡】

    Java设计模式[之]工厂方法模式[场景:制作咖啡] 1.工厂方法 1.1.工厂方法模式 1.2.具体需求(生产多种咖啡) 2.代码实现 2.1.代码结构 2.2.咖啡抽象类 2.3.一种咖啡 2.4 ...

  6. 设计模式(2)工厂方法模式(Factory Method)

    设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 源码地址 0 工厂方法模式简介 0.0 工厂方法模式定义 工厂方法模式是在简单工厂模式基础上,为解决更复杂的对象创建问题而衍生 ...

  7. Java设计模式(一) -- 工厂方法模式

    java的设计模式大体上分为三大类: •创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. •结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组 ...

  8. Java的二十三种设计模式(单例模式、工厂方法模式、抽象工厂模式)

    从这一块开始,我们详细介绍Java中23种设计模式的概念,应用场景等情况,并结合他们的特点及设计模式的原则进行分析. 创建型模式(5种):用于描述"怎样创建对象",它的主要特点是& ...

  9. 设计模式系列之「工厂方法模式」

    "玛尼玛尼哄~~~",一个手持螺旋丸的鸣人出现了. "哦哈哟锅炸一马屎~~~",一个仙人模式的鸣人出现了. "死密码撒~~~",使用变身术的 ...

最新文章

  1. java sqlhelper_java版sqlhelper(转)
  2. IMX6ULL的GPIO操作方法
  3. concurrent 底层_万字长文!从底层开始带你了解并发编程,彻底帮你搞懂Java锁!
  4. 电工接线模拟仿真软件_VERICUT数控加工仿真软件,最强的数控加工模拟软件,你知道么?...
  5. 第9章 中断和动态时钟显示
  6. github 学习使用
  7. 带参方法的使用 0908
  8. OpenShift 4 Hands-on Lab (12) 使用配置参数和环境变量
  9. 周边pd是什么意思_肿瘤百问百答(六)关于胃癌的PD-1抗体治疗,你应该知道些什么?...
  10. ollvm源码分析之虚假控制流(2)
  11. 炼丹笔记一——基于TensorFlow的vgg16的cifar10和100简单探究超参数对训练集收敛情况的影响
  12. cpu 调频 温度 ondemand
  13. ctfshow-WEB-web2
  14. 深度学习中分类和回归常见损失函数归纳小结
  15. 华为语音解锁设置_华为手机语音转文字怎么设置,如何完成音频在线转换
  16. 二维码背后的隐忧:扫码点单之后,谁从餐桌上拿走了你的信息?
  17. MATLAB_LSB_隐藏水印和提取,附代码
  18. 准备Vmware环境
  19. ZHS16GBK字符集插入中文时报错ORA-01756
  20. 微信里嵌入html5页面,微信小程序web-view嵌套H5实现微信支付功能解决方案

热门文章

  1. 欢聚时代(YY)2018笔试总结(数据挖掘方向)
  2. C语言hist()函数第2篇
  3. ifttt 编程开发_使用Stamplay构建AngularJS应用:面向开发人员的IFTTT
  4. [数电实验]外星萤火虫设计
  5. python爬虫获取并购重组数据
  6. 为什么1byte=8bit?
  7. 电商--订单支付中存在的问题以及思考
  8. 正式了解CTF的第一天
  9. 基于JSP的在线书店的设计
  10. SpringCloud-Hystrix断路器