从形式上来讲,通过角色合并,方法功能的转变,抽象工厂可以和生成器模式形式上取得一致(比如抽象工厂只处理一个产品族,工厂方法都处理同一个产品)。但注意,这仅仅是形式上的,实际上,抽象工厂和生成器模式有着本质的区别:

1、生成器模式是为了构造一个复杂的产品,而且购造这个产品遵循一定的规则(相同的过程),而抽象工厂则是为了创建成族的产品(系列产品),同族产品的构造在逻辑上并不存在必然的联系(唯一必然的联系就是大家都属于一族)。

2、生成器模式的构造方法是为了构造同一个产品,因此必须有指导者来协调进行工作,构造方法之间存在必然的业务联系,而抽象工厂的构造方法都是独立去构建自己的产品对象,因此他们不存在必然的联系。在生成器模式中客户端不直接调用构建产品部分的方法来获取最终产品,而抽象工厂中客户端是通过调用不同的工厂方法获取不同的产品。

3.在生成器模式中,那些用来构造产品不同部分的方法一般都实现为Protected形式,以防止客户端通过调用这种方法活得不可预料的结果,而抽象工厂中的这些方法必须为Public形式。否则客户无法调用来获得产品结果;

4.生成器模式的角色有生成器,产品和指导者,而抽象工厂的角色有工厂和产品。无论角色和功能怎样变换,但所含的业务逻辑角色都应该存在,这也是两个模式的业务本质。

设计模式之--生成器模式与抽象工厂模式的比较相关推荐

  1. 设计模式之工厂模式(工厂方法模式、抽象工厂模式)

    工厂模式 所谓工厂,就是将零件组装成产品的地方. 建一个对象常常需要复杂的过程,所以不适合包含在一个复合对象中.创建对象可能会导致大量的重复代码,可能会需要复合对象访问不到的信息,也可能提供不了足够级 ...

  2. 深入理解设计模式-简单工厂模式vs工厂方法模式vs抽象工厂模式对比讲解

    文章目录 前言 一.简单工厂模式 1.描述 2.特点 3.优缺点 4.类图说明 二.工厂方法模式 1.描述 2.特点 3.适用场景 4.类图说明 5.简单工厂模式与工厂方法模式区别: 三.抽象工厂模式 ...

  3. 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细

    1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...

  4. Java设计模式(工厂模式>抽象工厂模式和原型模式)

    Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...

  5. 021 设计模式之工厂方法模式,抽象工厂模式的区别

    简单工厂模式,工厂方法模式和抽象工厂模式的异同 简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类.我们掌握一种思想,就是在创建一个对象时,需要把容易发 ...

  6. 设计模式你怎么看?--抽象工厂模式

    一  前言 在设计模式中有简单工厂,工厂方法,抽象工厂,这三种工厂方法,各自有各自的特点,但有都有共同的特点 工厂(Factory)都是围绕着工厂类转,这篇只写 "抽象工厂"相关的 ...

  7. Java设计模式之工厂方法模式与抽象工厂模式

    2019独角兽企业重金招聘Python工程师标准>>> 一.前期回顾 上一篇<Java设计模式之单例模式>详细介绍了单例模式,介绍了单例模式的使用场景,优缺点,同时也写了 ...

  8. 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...

    转自:http://www.cnblogs.com/stonehat/archive/2012/04/16/2451891.html 设计模式系列--三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂 ...

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

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

  10. 设计模式之工厂方法模式、抽象工厂模式的概念和实现及使用“反射技术+读取配置文件”的方法对工厂模式进行改进(软件工程综合实践课程第三周个人作业)

    文章目录 一.实验目的 二.知识总结 1.工厂方法模式简介 2.抽象工厂模式简介 3.工厂模式小结 4.利用"反射技术+读取配置文件"的方法改进程序 三.实验内容 1. 工厂模式实 ...

最新文章

  1. Java跨平台实现原理及JVM垃圾回收、内存管理实战
  2. 在windows下查看SQLite数据库
  3. MySQL主从复制原理应用基础
  4. Ubuntu18.04安装Nautilus-actions自定义文件管理器鼠标右键列表
  5. Unity UGUI——Rect Transform包裹(Anchor Presets)
  6. 转 Java笔记:Java内存模型
  7. 将Go的main包拆分为多个文件
  8. Java调用Memcache入门
  9. ctags linux,ctags --- 每天一个 Linux 命令
  10. Java分布式面试题及答案,附架构师必备技术详解
  11. samurai_ii__vengeance(武士二:复仇)无法在android上运行的原因
  12. python 高等数学实验_高等数学——基于Python的实现
  13. LPC1768 SPI 外设控制DA(PCM1796)调试记录
  14. 万字详解 Docker 镜像详细操作
  15. 量子研究再获突破能否成功解决核潜艇通信难题?
  16. rop检查_他山之石丨详解抗VEGF治疗在ROP诊疗中的应用
  17. 第二周:四人小组项目
  18. 用于学术论文阅读外文学习的高效翻译工具——多译
  19. 我的青春我做主——80后提前的中年危机 / 陆琪
  20. 2020深圳计算机职称考试,2019年深圳市职称考评专业知识考试报名时间

热门文章

  1. kuangbin RMQ
  2. python保存文件后缀_python文件的后缀名是什么
  3. vs2013产品密钥(所有版本)
  4. 现代控制理论(二)李雅普诺夫稳定性分析
  5. 记一次VS2015安装/卸载以及编译给定程序
  6. MOOC|Coursera课程批量下载(保持资源原目录结构)
  7. FFmpeg拼接文件常见问题
  8. python+selenium自动化测试环境搭建步骤(selenium环境搭建)-绝不浪费您的时间
  9. 多米诺喷码机维修大全之----缺字、字体不成形、字体跑点以及歪
  10. 幅频特性和相频特性的物理意义