Builder和Factory模式区别

Builder模式结构:

Factory模式一进一出,Builder模式是分步流水线作业。
当你需要做一系列有序的工作或者按照一定的逻辑来完成创建一个对象时 Builder就派上用场啦。

我们可以看到,Builer模式与工厂模式是极为相似的,但是他们还是有区别的:

一、从结构上来看,Builder模式比工厂模式多了一个“导演类”的角色。
在Builder模式的类图中,假如把这个导演类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。

二、两者所创建的产品类型完全不一样。
Factory创建只能是单一的产品(单一在这指它非复合产品),而Builder所创建的产品是复合产品,即产品本身就是由其它部件产品组成的。

举个例子来说,现在要生产一辆车,假设它就只由这三个部分组成:玻璃、轮子、发动机。
对于工厂模式来说,他创建后返回的,只能是玻璃,或者轮子,抑或是发动机。
不管怎么样,他不能向客户返回一辆完整的汽车,要得到一辆完整的汽车,客户必须自己动手去把这些零部件组装成一辆汽车。
从这个意义上来讲,工厂模式中的工厂,只是充当了零件厂的角色。
那Builder又是如何创建产品的呢?在Builder模式中,一般不需要、也不充许向客户返回单个部件,他向客户返回的,仅仅就是一部已经完全组装好的汽车成品。
对于汽车部件的生产细节,客户不需要、也不应该让他们知道。

写到这,我突然想到了组装电脑与品牌电脑的差别,组装电脑虽然价格便宜,且易于改动,但性能没有保证,另外你自己还必须了解很多有关电脑方面的知识;对于品牌电脑,价格贵这点先暂时不说,关键在于他不灵活,但是它的性能可以得到很好保证(由厂家),这易像我们在Builder的系统端保证部件的质量一样。另外,对于品牌电脑,客户根本不需要了解多少电脑组装方面的知识,就可以把一台电脑抱回家,开机使用了。
那么,在实际运用中,你是喜欢做DIY一族呢,还是喜欢稳定有保证的质量呢?好像在我们编程的这个过程中,我们比较趋向于使用“品牌电脑”。这也就为我们正确使用这两种设计模式提供了一个方向:如果你要生产的产品是由不同部件组成的,你最好使用Builder模式,而非Factory模式。

三、Builder和Factory的差别,还在于他们所生产部件产品所在产品树的问题。
这样说,可能有点拗口。具体来说吧,在工厂模式中,我们知道,一个工厂可以创建多个产品,但一个工厂模式中所创建的某个产品,都会和另一个工厂中所创建的产品在同一棵继承树上。
Builder可以创建出可以创建出风马不相及的产品(虽然我们不这么做),但是Factory模式一般是创建一类产品。

转:https://www.cnblogs.com/yejg1212/archive/2013/02/25/2932526.html

转载于:https://www.cnblogs.com/jiangtao1218/p/10544474.html

设计模式-Builder和Factory模式区别相关推荐

  1. Builder和Factory模式区别

    Builder模式结构: Factory模式一进一出,Builder模式是分步流水线作业. 当你需要做一系列有序的工作或者按照一定的逻辑来完成创建一个对象时 Builder就派上用场啦. 我们可以看到 ...

  2. Builder模式与Factory模式区别

    看Glide代码时遇到builder和factory,感觉这两个模式很像,不知道这两者有什么区别. 查了一些资料,自己理解了一下 Builder感觉就像是打工仔Worker,是卑微的乙方,他告诉我(甲 ...

  3. C++ 设计模式之Static Factory模式(简单工厂模式)

    简单工厂模式并不是GOF提出的23种设计模式中的一种.工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品. 适用场合 1.在程序中,需要创建的对象很多,导致对象的 ...

  4. 设计模式--简单工厂(Factory)模式

    温故而知新,看了以前写的博文<Asp.net读取Excel文件 2>http://www.cnblogs.com/insus/archive/2011/05/05/2037808.html ...

  5. Java设计模式(1)工厂模式(Factory模式)

    工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因 ...

  6. 设计模式---5(建造者模式的概念及其实现,建造者模式的角色与职责,建造者模式和工厂模式的区别)

    建造者模式 建造者模式的概念 Builder 模式也叫建造者模式或者生成器模式,是由 GoF 提出的 23 种设计模式中的一种. Builder 模式是一种对象创建型模式之一,用来隐藏复合对象的创建过 ...

  7. 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式(转载)

    源地址:http://doc.chinaunix.net/python/200703/202210.shtml 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式 ...

  8. GOF设计模式学习--辨析各种模式的要点和相似模式之间的区别

    --辨析各种模式的要点和相似模式之间的区别 http://blog.csdn.net/wind19/article/details/6968149 1                    正文之前 ...

  9. java设计模式4--建造者模式(Builder)

    本文地址:http://www.cnblogs.com/archimedes/p/java-builder-pattern.html,转载请注明源地址. 建造者模式 将一个复杂对象的构建与它的表示分离 ...

最新文章

  1. 日本光伏相关企业倒闭数量上升 帝国征信调查
  2. Crontab命令格式
  3. 并查集(加权规则、折叠规则)
  4. 通过修改explorer.exe内存隐藏文件及注册表项
  5. 数字图像处理,读懂频域处理的“傅里叶变换”
  6. 弹出页面,弹出框,$(‘‘).modal({});模态框
  7. iOS开发之二维码生成(错误问题小记,微信扫描,长按不识别)
  8. python 并行_python多进程并行代码实例
  9. kepware datalogger
  10. 产品的思路——来自腾讯张小龙的分享(全版)
  11. 【Java】用类描述计算机中CPU的速度和硬盘的容量,要求Java应用程序由4个类,名字分别是PC、CPU、HardDisk、和Test,其中Test是主类。
  12. C++入门学习:引用和常引用
  13. [知识普及贴]中国人不可不知道的知识(怕以后找不到了~~) [经典,值得收藏]
  14. 公钥密码学中的公钥和私钥
  15. 安卓 LayoutInflater详解
  16. Redis哈希槽的概念
  17. 10个优质的基于Node.js的CMS 内容管理平台
  18. 树莓派3B+安装Ubuntu mate遇到彩虹屏
  19. EMC经典问答85问(50-54问)
  20. App 请求校验/加密方式总结

热门文章

  1. hbase简介(大数据技术)
  2. python 高维数据_用Sci-kit learn和XGBoost进行多类分类:Brainwave数据案例研究
  3. vue设置页面标题title
  4. 每日一学:如何读取网络图片
  5. js保留两位小数的函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!...
  6. .NETCore_生成实体
  7. hadoop2 Ubuntu 下安装部署
  8. 长路漫漫,唯剑作伴--loadView、viewDidLoad及viewDidUnload的关系
  9. 系统地学习JavaScript
  10. 苏教版国标本小学语文第一册汉字笔画