概述:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性
1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2.当构造过程必须允许被构造的对象有不同的表示时。
参与者
1.Builder
为创建一个Product对象的各个部件指定抽象接口。
2.ConcreteBuilder
实现Builder的接口以构造和装配该产品的各个部件。
定义并明确它所创建的表示。
提供一个检索产品的接口。
3.Director
构造一个使用Builder接口的对象。
4.Product
表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
源码示例:
package com.sql9.created;
/**
* @author iihero
*
*/
abstract class Train
{
private String _body;
private String _head;
private String _tail;
public String getBody()
{
return _body;
}
public String getHead()
{
return _head;
}
public String getTail()
{
return _tail;
}
public void setBody(String body)
{
_body = body;
}
public void setHead(String head)
{
_head = head;
}
public void setTail(String tail)
{
_tail = tail;
}
}
class NorthTrain extends Train
{
public NorthTrain()
{
System.out.println("北方火车");
}
}
// Builder
interface ITrainBuilder
{
void buildBody();
void buildHead();
void buildTail();
Train buildTrain();
}
//Concrete Builder
class TrainBuilder implements ITrainBuilder
{
Train train;
public TrainBuilder()
{
train = new NorthTrain();
}
public void buildBody()
{
train.setBody("制造车身...");
}
public void buildHead()
{
train.setHead("制造车头...");
}
public void buildTail()
{
train.setTail("制造车尾...");
}
public Train buildTrain()
{
return train;
}
}
// Director
class TrainDirector
{
public Train constructTrain(ITrainBuilder itb)
{
itb.buildBody();
itb.buildHead();
itb.buildTail();
return itb.buildTrain();
}
}
public class BuilderTest
{
public static void main(String[] args)
{
TrainDirector td = new TrainDirector();
Train train = td.constructTrain(new TrainBuilder());
System.out.println(train.getBody());
System.out.println(train.getHead());
System.out.println(train.getTail());
}
}
结果:
北方火车
制造车身...
制造车头...
制造车尾...
<script type="text/javascript"><!--
google_ad_client = "ca-pub-7104628658411459";
/* wide1 */
google_ad_slot = "8564482570";
google_ad_width = 728;
google_ad_height = 90;
//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
分享到:
相关推荐
JAVA-设计模式-创建型模式-建造者模式
c++设计模式-创建型模式-建造者模式-qt工程源码,c++实现
设计模式之---建造模式 1,建造模式属于对象的创建模式,是将一个产品的内部表象和产品的生产分割出来 2.使用原因:为了将构建复杂对象的过程和它的不见解耦; 3 使用情况:建造模式利用一个导演着对象和一个具体...
java设计模式------------------------------------建造者模式
设计模式专题之(四)建造者模式---设计模式建造者模式示例代码(python--c++)
因此我个人认为Builder模式中要好好把握如下几点 1. 需要创建的对象是复杂对象 2. 对象的创建过程是一步步创建(即:可能由于过程的不同而导致有不同的对象展示) 3. 明确建造者(Builder)、具体建造者(Concrete ...
建造者又分两种,一种是有一个专门的类负责决定建造的顺序,如上例,有人可以决定建筑商先建什么,后建什么。代码如下(原谅我用拼音,这么做是不对的):房子类:园林类:
设计模式03-创建型模式 设计模式04-创建型模式2 设计模式05-建造者、原型模式 设计模式06-适配器、桥接、组合模式 设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大...
NULL 博文链接:https://wy649898543.iteye.com/blog/1431751
Java 设计模式-建造者模式(Builder)结合Android小知识讲解,简单明了
软件设计模式-2021秋-实验1-创建型模式实验报告附源码和类图.zip 工厂方法模式、建造者模式、抽象工厂模式、单例模式
C#设计模式之建造者(Builder)模式示例源代码
Java设计模式-建造者模式详解
设计模式实验报告-建造者,有代码实例和运行结果
设计模式C++学习之建造者模式(Builder)
这个http://blog.csdn.net/dawanganban/article/details/9990405博客中java设计模式的源代码。下载前请先看《设计模式——建造者模式》一文。
设计模式之建造者模式代码示例,
4.设计模式-建造者模式1
设计模式-建造者模式(讲解及其实现代码)
设计模式-建造者模式,该模式涉及产品,构造者,指挥者、调用者等几个角色,职责明确,在实际项目中使用得比较多。