设计模式之Builder模式

原创 2006年06月07日 16:00:00

Builder模式是将构建复杂对象的过程和它的部件解耦.

因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮 方向盘 发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder模式就是为了将部件和组装过程分开.

理解Builder模式:

        生产流水线:以前是手工业作坊式的人工单个单个的生产零件然后一步一步组装做,好比有了工业革命,现在都由生产流水线代替了。如要造丰田汽车,先制定汽车的构造如由车胎、方
向盘、发动机组成。再以此构造标准生产丰田汽车的车胎、方向盘、发动机。然后进行组装。最后得到丰田汽车.

举例:

看到网上一个造房子的例子比较好理解,所以就拿来借用下.造房子本身比较复杂,因为各个部件如门,窗,墙,栋梁等需要建筑工人的构造,还有各个部件的组装就更显得重要而复杂,所以一般都要有设计师来画图来指挥各个部件的组装.而设计师本身也不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样建筑工人开始建设,最后,我可以向建筑工人要房子了。在这个过程中,设计师是什么也没有,除了他在脑子里的设计和命令,所以要房子也是跟建筑工人要,记住了!

package builder;

public interface Builder
{
public  void makeWindow();
public  void makeFloor();
public  Room  getRoom();

}


/*************************************************************/
package builder;

public class Designer {

  public Designer() {
  }
  public void order(Builder  builder) 
{
  builder.makeWindow();
  builder.makeFloor();

}

 }

/*************************************************************/
package builder;
public class Worker implements Builder{
  private  String window="";
  private  String floor="";
  public Worker() {
  }
    public  void makeWindow(){
  window=new String("window");
  }
  public  void makeFloor(){
  floor=new String("floor");
  }
  public  Room  getRoom()
  {
  if((!window.equals(""))&&(!floor.equals("")))
    {
    System.out.println("room ready!");
    return new Room();
    }
  else return null;
  }
}

/*************************************************************/
package builder;
public class Room {
  private  String window="";
  private  String floor="";
  public Room() {
  }
  }
/*************************************************************/

package builder;

public class Client {

  public Client() {
  }
  public static void main(String[] args) {
     Builder worker=new Worker();
     Designer  designer=new      Designer();
     designer.order(worker);
     worker.getRoom();
  }
}

【java设计模式】之 建造者(Builder)模式

我们还是举上一节的例子:生产汽车。上一节我们通过模板方法模式控制汽车跑起来的动作,那么需求是无止境的,现在如果老板又增加了额外的需求:汽车启动、停止、鸣笛引擎声都由客户自己控制,他想要什么顺序就什么顺...
  • eson_15
  • eson_15
  • 2016年05月06日 08:59
  • 5065

浅谈JAVA设计模式之——建造者模式(Builder)

一、概述 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 二、适用性 1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2.当构造过程必须允许被...
  • l1028386804
  • l1028386804
  • 2015年05月02日 21:22
  • 9807

设计模式学习之Builder模式

建造者模式(Builder Pattern),是创造性模式之一,Builder 模式的目的则是为了将对象的构建与展示分离。Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道...
  • hjxgood
  • hjxgood
  • 2017年04月21日 15:09
  • 511

设计模式之四 --- 建造(Builder)模式

【1】基本概念            建造(Builder)模式是一种对象构建的设计模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象...
  • cjjky
  • cjjky
  • 2012年03月07日 01:01
  • 16992

builder设计模式的使用以及优缺点

嗯,大家是否在开发过程中,经常遇到一个类拥有许多的属性呢。为了使这个类的使用便捷,我们通常情况下会给这个类多个构造器以及一个默认的无参数构造器。 但是当参数的个数达到四个或者更多的时候,你是否会经常...
  • u010469003
  • u010469003
  • 2014年04月03日 15:16
  • 1827

Android开发中无处不在的设计模式——Builder模式

上一篇文章介绍了单例模式,这一篇继续介绍一个常见的模式——Builder模式。那么什么是Builder模式呢。你通过搜索,会发现大部分晚上的定义都是 将一个复杂对象的构建与它的表示分离,使得同样的...
  • sbsujjbcy
  • sbsujjbcy
  • 2015年10月18日 10:16
  • 5097

Android设计模式之建造者模式(builder pattern)

builder设计模式我们很常见,比如我们使用AlertDialog的时候就使用的builder设计模式,著名的Universal-Image-Loader的初始化配置也是使用的builder设计模式...
  • nugongahou110
  • nugongahou110
  • 2015年12月25日 10:08
  • 2954

Java设计模式之Builder模式

Java设计模式之Builder模式Java设计模式之Builder模式 简介 适用性 用LOL的出装备的顺序为例 基本实现代码 BasePerson的实现 DeMaXiYa的实现 QiTianDaS...
  • SiMaXiaoChen
  • SiMaXiaoChen
  • 2016年11月28日 21:17
  • 945

PHP设计模式之Builder模式

Builder模式让我想到一个词“外包”,他把对象的创建外包给一个客户类,并且这个“外包类”要一步一步地创建对象,但是他又不返回本身类的对象。当然,这只是个比方,不是很准确,其实Builder模式要解...
  • hcb0825
  • hcb0825
  • 2011年04月15日 17:05
  • 876

Java设计模式——Builder模式

builder模式的使用目的是为了将构建复杂对象的过程和它的部件解耦。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。...
  • u013761665
  • u013761665
  • 2015年12月11日 13:47
  • 2716
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之Builder模式
举报原因:
原因补充:

(最多只允许输入30个字)