`
小牛犊
  • 浏览: 96967 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

GoF:Builder模式

阅读更多

Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

1.首先假设一个复杂对象是由多个部件组成的,Builder模式是把复杂对象的创建和部件的创建分别开来,分别用Builder类和Director类来表示。

 

A.Builder接口,它定义如何创建复杂对象的各个部件。

public interface Builder {
	// 创建部件A 比如创建汽车车轮
	public void buildPartA(); 
	// 创建部件B 比如创建汽车方向盘
	public void buildPartB(); 
	// 创建部件C 比如创建汽车发动机
	public void buildPartC(); 
	// 返回最后组装成品结果 (返回最后装配好的汽车)
	// 成品的组装过程不在这里进行,而是转移到下面的Director类中进行.
	//从而实现了解耦过程和部件
	public Product getResult(); 
}

 

B.  Builder的实现类,通过具体完成接口Builder来构建或装配产品的部件,定义并明确它所要创建的是什么具体东西,
提供一个可以重新获取产品的接口。

public class ConcreteBuilder implements Builder {
	@Override
	public void buildPartA() {
                               System.out.println("创建部件A 比如创建汽车车轮");
	}
	@Override
	public void buildPartB() {
		System.out.println("创建部件B 比如创建汽车方向盘");
	}
	@Override
	public void buildPartC() {
		System.out.println("创建部件C 比如创建汽车发动机");
	}
	@Override
	public Product getResult() {
		return new RedProduct() ;
	}
}

 

 C.Director构建最后的复杂对象,而在上面Builder接口中封装的是如何创建一个个部件(复杂对象是由这些部件组成的),也就是说Director的内容是如何将部件最后组装成成品。

public class Director {
	private  Builder builder;
	public Director(Builder builder){
		this.builder=builder;
	}
	public void construct(){
		// 相当于按一定的步骤生产部件
		builder.buildPartA();
		builder.buildPartB();
		builder.buildPartC();
	}
}

 D.复杂对象:产品Product

public interface Product {
	public void make();
}

  

public class RedProduct implements Product {
	@Override
	public void make() {
	}
	public RedProduct(){
		System.out.println("产出一辆红旗");
	}
}

 E.客户端

public class App {
	public static void main(String[] args) {
		Builder builder = new ConcreteBuilder();
		Director director = new Director( builder ); 
		director.construct(); 
		Product product = builder.getResult(); 
	}
}

 F.运行结果

创建部件A 比如创建汽车车轮
创建部件B 比如创建汽车方向盘
创建部件C 比如创建汽车发动机
产出一辆红旗

 

 

分享到:
评论

相关推荐

    GoF:设计模式--可复用面向对象软件的基础(1-5章)

    第二章至第五章,作者们详细讲解了五种创建型设计模式:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这五种模式都...

    GoF 23种设计模式的详解与应用

    创建模式:设计模式之Factory,设计模式之Prototype(原型),设计模式之Builder,设计模式之Singleton(单态). 结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite...

    GOF(设计模式)概述

    《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者共同编写,因此人们通常将其...

    GOF 设计模式 中文 高清

    4. **建造者模式 (Builder)**:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。适用于构建过程复杂的对象。 5. **原型模式 (Prototype)**:用原型实例指定创建对象的种类,并且通过复制...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    - **Builder模式**:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **Prototype模式**:通过克隆已有的实例来创建新对象,而不是通过创建新的实例。 #### 2. 结构型模式 - **...

    design-patterns-gof:GoF设计模式实现

    Java中的Builder模式常用于创建复杂对象,如StringBuilder。 5. **原型模式 (Prototype)**:通过复制已有对象来创建新对象,减少了类的实例化。Java提供了Cloneable接口和Object类的clone()方法来支持原型模式。 6...

    C++ 设计模式 GOF 23经典模式

    《C++设计模式:GOF 23经典模式解析》 设计模式是软件工程中的一种通用解决方案,它针对常见的设计问题提供了经过验证的最佳实践。GOF(Gang of Four)23种设计模式是由Erich Gamma、Richard Helm、Ralph Johnson和...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **1.4 Builder模式**:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - **应用场景**:当创建复杂对象的算法应该独立于部分组成对象的类时。 - **优点**:各个部件灵活组装,...

    GOF 23种设计模式

    《GOF 23种设计模式》是软件工程领域中极具影响力的一本书,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,因此也被称为“Gang of Four”(GOF)的设计模式。这本书详细阐述了在面向...

    GoF 23种设计模式解析附C++实现源码(2nd Edition

    - **1.4 Builder模式**:构建者模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式特别适用于当一个类的构造函数过于复杂或者对象的创建过程需要分步骤进行的情况。 - **1.5 ...

    GOF23设计模式讲解及C++源代码实现

    GOF,即 Gamma、Erich, Johnson, Vlissides 四位大师合著的《设计模式:可复用面向对象软件的基础》一书,提出了23种经典的设计模式。这些模式为软件设计提供了通用的解决方案,使得开发者能够利用前人的经验,提高...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    这些模式是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师,通常被称为GoF(Gang of Four),在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出的。这本书详细阐述了23种设计...

    设计模式精解-GoF23种设计模式解析

    - **1.4 Builder模式**:Builder模式将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 - 它通过逐步构建复杂对象来提供更大的灵活性,适用于需要动态地改变一个对象的构建过程的情况...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    4. **Builder模式** - **定义**:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - **应用场景**:当创建的对象较复杂,由多个部件构成,并且这些部件需要按照一定的算法组装起来...

    GoF+23种设计模式解析附C++实现源码(2nd+Edition).pdf

    **C++实现**: 在C++中实现Builder模式需要定义一个Builder接口,该接口包含构建对象各个部分的方法。然后,创建一个Director类来指导构建过程,并最终组装完整的产品。 #### 1.5 Prototype模式 **定义**: ...

    设计模式精解-GoF 23种设计模式解析附

    - **Builder模式**:将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **应用场景**:当对象的构造过程复杂且与表示无关时。 - **优点**:提高了代码的灵活性。 - **缺点**:会增加...

Global site tag (gtag.js) - Google Analytics