设计模式之Builder——购机篇(原创)

原创 2004年10月09日 17:28:00

设计模式之Builder——购机篇
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


   最近想买一台电脑用于学习,因此我就去了一家电脑公司,经过分析,选用了下面的配置:

CPU    P2.4

主板   Intel

硬盘   80G

。。。

买过电脑的朋友可能都知道,我们选好配置后,电脑公司就会有专门的组装师(Assembler)来给我们装机。电脑(Computer)就是由这些东西(我们称之为Part)组成的。学过经济学的朋友可能都知道,如果这台组装好的电脑不卖掉,那它就不是商品(Commodity),而仅仅是台电脑而已。

1、  在这里,我们先定义商品(Commodity)类:

public class Commodity {

  String commodity ="";

  public Commodity (Part partA,Part partB,Part partC) {//由各个部分组成

    this. commodity = partA.part+"/n";

    this. commodity = product+partB.part+"/n";

    this. commodity = product+partC.part;

    System.out.println("我的机器配置为:/n"+ commodity);

  }

}

2、  下来我们再定义电脑的组成部分(Part)类:

public class Part {

  String part="";

  public Part(String part){

    this.part = part;

  }

}

3、  我们把电脑(Computer)定义成一个接口类:

public interface Computer {

//组装部件A 比如CPU

  void buildPartA();

 

//组装部件B  比如主板

  void buildPartB();

 

//组装部件C  比如硬盘

  void buildPartC();

 

//返回最后组装成品结果 (返回最后组装好的电脑)

//成品的组装过程不在这里进行,而是由组装师(Assembler)类完成的。

//从而实现了过程和部件的分离

  Commodity getCommodity();

}

4、  定义电脑的组装师(Assembler)类:

public class Assembler {

  private Computer computer;

  public Assembler(Computer computer) {  //主要任务是装电脑

    this.computer = computer;

  }

 

// 将部件partA partB partC最后组成复杂对象

//这里是将主板、CPU和硬盘组装成PC的过程

  public void construct() {

    computer.buildPartA();

    computer.buildPartB();

    computer.buildPartC();

  }

}

5、  我的电脑是对电脑(Computer)接口的具体实现,因此再定义MyComputer实现类:

public class MyComputer implements Computer {

  Part partA, partB, partC;

  public void buildPartA() {

    partA = new Part("P42.4 CPU");

  }

  public void buildPartB() {

    partB = new Part("Inter 主板");

  }

  public void buildPartC() {

    partC = new Part("80G硬盘");

  }

  public Commodity getCommodity() {

//返回最后组装成品结果

    Commodity myComputer = new Commodity (partA,partB,partC);

    return myComputer;

  }

}

6、  编写测试类:

public class MyComputerTest {

  public static void  main(String args[]){

    MyComputer myComputer = new MyComputer();      //组装我的电脑

    Assembler assembler = new Assembler( myComputer );  //派某一位组装师

    assembler.construct();    //组装师进行组装过程

    Commodity commodity = myComputer.getCommodity();   //卖给我的电脑(商品)

  }

}

7、说明:

A代码只用来学习Builder模式,要运行的话,必须要做一点改动。

B将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。因为每个人的电脑配置可能都是不同的。

C:我们使用Builer是为了构建复杂对象的过程和它的部件解耦,也就是说将过程分的尽可能细,而且每一部分只用完成自己的功能即可(各司其职嘛)。
   8、特别感谢:
      感谢LevinLee网友提出的意见,出现你所说的问题是由于调试程序是用的是Product类,后来为说明问题改成Commodity 类,有些地方忘了改过来,就出现了你说的那种情况。我以改正过来了,错误之处希望大家指正。在此感谢!

设计模式之Builder——购机篇

最近想买一台电脑用于学习,因此我就去了一家电脑公司,经过分析,选用了下面的配置:CPU    P2.4主板   Intel硬盘   80G。。。买过电脑的朋友可能都知道,我们选好配置后,电脑公司就会有...
  • cyokin
  • cyokin
  • 2004年11月10日 14:27
  • 994

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

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

《23种设计模式 Lua篇》 - 观察者模式

当观察哨发现入侵者,通知正在上班的警卫。
  • tubufeng
  • tubufeng
  • 2014年08月26日 19:53
  • 1540

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

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

设计模式学习之Builder模式

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

设计模式之—建造者模式(Builder)-Java实现

Builder模式,将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部 表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模...
  • fuhao715
  • fuhao715
  • 2012年01月12日 13:58
  • 3465

[置顶] 国内首部Java多线程设计模式原创作品《Java多线程编程实战指南(设计模式篇)》已出版

国内首部Java多线程设计模式原创作品《Java多线程编程实战指南(设计模式篇)》已由电子工业出版社出版。本书从理论到实战,用生活化的实例和通俗易懂的语言全面介绍Java多线程编程的"三十六计"——多...
  • viscent_huang
  • viscent_huang
  • 2015年11月18日 11:21
  • 4415

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

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

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

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

《Java多线程编程实战指南(设计模式篇)》答疑总结(陆续更新)

博客分类: 《Java多线程编程实战指南(设计模式篇)》答疑开展以来,不少网友提出的问题既有与本书有关的话题,也有Java多线程编程基础知识的相关话题。由于时间关系,对于重复的问题我...
  • dotedy
  • dotedy
  • 2015年11月27日 14:03
  • 888
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之Builder——购机篇(原创)
举报原因:
原因补充:

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