概述:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性
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>
分享到:
相关推荐
3. **建造者**(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 4. **原型**(Prototype):用原型实例指定创建对象的种类,并且通过复制这些原型来创建新的对象。 5. *...
主要分为五种:工厂方法(Factory Method)、抽象工厂(Abstract Factory)、单例(Singleton)、建造者\Builder、原型\(Prototype\)。例如,工厂方法允许在子类中定义实例化对象的具体过程,而单例模式确保一个类只有一个...
- 建造者模式(Builder):将复杂对象的构建与表示分离,使得相同的构建过程可以创建不同的表示。 2. **结构型模式**(Structural Patterns): - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的...
- 创建型模式:如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype)。它们主要关注对象的创建过程,使得代码更加灵活,易于扩展。 - 结构型...
- **创建型模式**:如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype),它们主要关注对象的创建过程。 - **结构型模式**:如适配器...
1. 创建型模式:如单例模式(Singleton)、工厂模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式关注对象的创建,旨在降低对象的创建过程与使用...
创建型模式如单例(Singleton)、工厂方法(Factory Method)和建造者(Builder)等,关注对象的创建过程,确保在复杂环境中能正确并高效地创建对象。结构型模式如适配器(Adapter)、装饰器(Decorator)和代理...
- **建造者模式**(Builder):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **原型模式**(Prototype):通过复制一个已有实例来创建新对象,而不是通过创建操作。 2. **结构型...
建造者模式(Builder)是一种设计模式,主要用于构建复杂的对象,其核心思想是将对象的构建与表示分离,使得相同的构建过程可以创建不同的表示。在C++中,这种模式的应用可以帮助我们更好地管理和组织代码,特别是在...
### 设计模式笔记总结 本篇文章是对一份设计模式学习资料的深入解读,这份资料包含了19种经典的设计模式,并提供了C#示例代码,适用于学习和复习。下面将逐一介绍这些设计模式及其核心概念。 #### 1. 简单工厂模式...
### 设计模式总结笔记 #### 一、概述 设计模式是一种在特定上下文中解决软件设计问题的方案。它并不是一种现成的代码片段或者框架,而是一种指导思想,帮助开发者理解如何更好地组织代码来解决问题。设计模式可以...
1. **创建型模式**(Creational Patterns):这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式...
### 设计模式学习笔记 #### 引言 设计模式(Design Patterns)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...
3. 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 4. 原型模式(Prototype Pattern):通过复制一个现有的实例来创建新的实例,用于减少创建对象的...
`BuilderPattern.java`可能是示例代码,笔记会阐述如何使用建造者构建对象。 8. **策略模式**:定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。Eclipse实现可能包括策略接口和具体策略类,笔记会...
4. **建造者模式**:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在Java中,`Builder`类用于构建复杂的对象结构。 5. **原型模式**:用原型实例指定创建对象的种类,并且通过复制...
"GoF 23种设计模式学习笔记" 是一个深入探讨这23个经典设计模式的资源,这些模式最初由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年的著作《设计模式:可复用面向对象软件的基础》中...
- 建造者(Builder)模式:逐步构建一个复杂的对象,使其构造过程独立于组成部分。 - **结构型模式**:关注于对象之间的组合方式,以便形成更复杂的结构。 - 代理(Proxy)模式:提供一个替代对象来控制对另一个...