设计模式之Builder (创建者模式)的一些个人理解(转)

对于Builder模式很简单,但是一直想不明白为什么要这么设计,为什么要向builder要Product而不是向知道建造过程的Director要。刚才google到一篇文章,总算清楚了。在这里转贴一下这位richardluo的比喻

简单地说,就好象我要一座房子住,可是我不知道怎么盖(简单的砌墙,层次较低),也不知道怎么样设计(建几个房间,几个门好看,层次较高),于是我需要找一帮民工,他们会砌墙,还得找个设计师,他知道怎么设计,我还要确保民工听设计师的领导,而设计师本身也不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样民工开始建设,最后,我可以向民工要房子了。在这个过程中,设计师是什么也没有,除了他在脑子里的设计和命令,所以要房子也是跟民工要,记住了!

以下是richardluo的代码,我根据他的思路加上了相应的注释。


1,定义工人接口,就是能够完成建造房子任务的人的通用要求。

java 代码

  1. // 工人接口,定义了各个工人所要进行的工所作。他们负责进行具体部件如窗户,地板的建造。
  2. // 同时因为房子是民工建的,因此建设完成后由他把房子递交回房主
  3. public interface Builder {
  4. public  void makeWindow();
  5. public  void makeFloor();
  6. public  Room  getRoom();
  7. }

2,定义设计师,他的职责是指挥房主指派给他的工人按照自己的设计意图建造房子。

java 代码

  1. // 设计师。他知道房子应该怎么设计,但他不会自己去建造,而是指挥民工去建造。
  2. public class Designer {
  3. // 指挥民工进行工作
  4. public void order(Builder  builder) {
  5. builder.makeWindow();
  6. builder.makeFloor();
  7. }
  8. }

3,民工,他负责具体事物的实施。

java 代码

  1. // 民工。负责进行具体部件如窗户,地板的建造。
  2. //同时因为房子是民工建的,因此建设完成后由他把房子递交回房主
  3. public class Mingong  implements Builder {
  4. private  String window="";
  5. private  String floor="";
  6. public  void makeWindow() {
  7. window=new String("window");
  8. }
  9. public  void makeFloor(){
  10. floor=new String("floor");
  11. }
  12. // 回交房子给房主
  13. public  Room  getRoom() {
  14. if((!window.equals(""))&&(!floor.equals(""))) {
  15. System.out.println("room ready!");
  16. return new Room();
  17. }
  18. else return null;
  19. }
  20. }

4,房主,就是雇人,收房。

java 代码

  1. // 房主。房主的任务就是聘请一个民工,一个设计师,同时把民工给设计师指挥,督促设计师开展工作。最后从民工手上收房。
  2. public class Client {
  3. public static void main(String[] args) {
  4. Builder mingong = new Mingong();
  5. Designer  designer = new  Designer();
  6. designer.order(mingong);
  7. mingong.getRoom();
  8. }
  9. }

好了,我觉得这样大概能说明白了。不知各位觉得如何呢?或者有更好的应用场景解释,敬请赐教。

时间: 2024-08-02 00:10:35

设计模式之Builder (创建者模式)的一些个人理解(转)的相关文章

Builder创建者模式

http://www.codeproject.com/Articles/42415/Builder-Design-Pattern In Elizabeth's day care center, the teacher helps the kids to build all kinds of toys to develop their creative skills. One of Elizabeth's favorite activities is to make animals with pl

设计模式(五)创建者模式(Builder)-创建型

创建者模式Builder 创建者模式就是将一个复杂对象的构建和它的表示分离,使的同样的构建过程可以创建不同的表示,而在客户端不用知道对象的构建细节.当系统需要创建一组复杂的对象,而且这个复杂的对象组装起来比较麻烦时,就可以使用创建者模式. 将抽象工厂模式中的功能类全部抽取出来放到一个类中 工厂类就是只负责对象的创建,不负责对象的组装,通过Director类来进行组装, 抽象工厂模式和创建者模式很类似,只是创建者模式更进一步的实现了类的单一职责 创建者模式 创建者模式的实现原理 创建者模式实际上就

五分钟一个设计模式之创建者模式

五分钟一个设计模式,用最简单的方法来描述设计模式. 认识创建者模式 创建者模式(又叫生成器模式)是为创建一个产品而生的,这个产品的组装算法是确定的,但零部件可以分配给多个厂商生产.使用创建者模式来创建产品,可以把产品零部件的生产和组装分开了. 创建者模式包含以下几个部分: 产品(Product) 厂商的接口(Builder) 具体的厂商(ConcreteBuilder1.ConcreteBuilder2.-ConcreteBuilderN),实现厂商接口,负责产品零部件的生产工作 指导者(Dir

01.设计模式_简单工厂模式

转载自  http://www.cnblogs.com/zhili/p/SimpleFactory.html 一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂模式的介绍 说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类, 我们平常编程

C#设计模式(2)——简单工厂模式

一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式——简单工厂模式. 二.简单工厂模式的介绍 说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类, 我们平常编程中,当使用”new”关键字创建一个对象时,此时该类就依赖与这个对象,也就是他们之间的耦合度高,当需求变化时,我

C#设计模式(2)-简单工厂模式

引言 上一遍中介绍了设计模式中的单例模式-C#设计模式(1)-单例模式,本篇将介绍简单工厂模式,也是比较容易理解的一种模式:本文将以多数据库操作为例进行讲解: 简单工厂模式简介 什么是简单工厂模式? 定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法模式,它属于创建型模式. 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责

"围观"设计模式(9)--创建型之创建者模式(Builder Pattern)

生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式.它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象.----WIKIPEDIA 个人的理解: 建造者模式可以设置不同的属性或者行为,创建出不一样的对象.比如说生产汽车,假如有三个重要的工序,塑形.拼装.上色.那么可以通过创建者模式来设置,这三道工序中不同的车来说,三道工序可能就是不一样的.通过创建者模式来创建出对象的表现形式也自然就不一样.

[设计模式] 4 创建者模式 builder

转载http://blog.csdn.net/wuzhekai1985/article/details/6667467 建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(DP).<大话设计模式>举了一个很好的例子——建造小人,一共需建造6个部分,头部.身体.左右手.左右脚.与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的.建造小人就是在控制下一步步构造出来的.创建者模式可以能更精细的控制构建过程,从而能更精细的控制所得产品的内部结构.下面给

设计模式学习总结(五)创建者模式(Builder)

创建者模式,主要针对某些产品有类似的生产步骤,且有需要有先后顺序的进行各个部件的生成. 一.示例展示: 通过学习及总结,以下是我完成的创建者模式的示例: 1.创建产品类:Laptop public class Laptop { ArrayList LaptopParts = new ArrayList(); public void AddParts(string PartName) { LaptopParts.Add(PartName); } public void ShowPartList()

Java 设计模式:创建者模式

1.什么是创建者模式 创建者模式(Builder)是将一个复杂的对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示.比如就建造房子为例,现实生活中房子的样子是各种各样的,而且每座房子内的格局.大小等等都不一样,但是建造房子的流程基本都是一样的.创建者模式就是创建的流程保持不变,但是流程中每一步的细节是可以变化的,从而创建出不同的产品. 创建者模式中包括以下几个角色 (1).Builder 抽象建造者类,规定了产品的各个组成部分,并声明获取建造完成后产品的抽象方法. (2).Concr