`

建造者(Builder)模式

阅读更多
如果说工厂模式是在创建对象的话,那么Builder模式就是一个“精工细作”的过程。
Builder模式用于把产品创建的每个步骤封装起来,对客户端关闭。

首先,我们制作一个抽象的产品,假设有2个部件:
package dp.builder.general;

public interface Product {
	void setPart1(String part1);
	void setPart2(String part2);
}


然后是实际的产品:
public class Product1 implements Product {
	
	private String part1;
	private String part2;
	
	public Product1() {
		part1 = "";
		part2 = "";
	}
	
	public void setPart1(String part1) {
		this.part1 = part1;
	}
	
	public void setPart2(String part2) {
		this.part2 = part2;
	}
	
	public String toString() {
		return "Product1: " + part1 + ", " + part2;
	}
}


package dp.builder.general;

public class Product2 implements Product {
	
	private String part1;
	private String part2;
	
	public Product2() {
		part1 = "";
		part2 = "";
	}
	
	public void setPart1(String part1) {
		this.part1 = part1;
	}
	
	public void setPart2(String part2) {
		this.part2 = part2;
	}
	
	public String toString() {
		return "Product2: " + part1 + ", " + part2;
	}
}


接着,我们创建Builder接口,它负责装配产品部件,显示产品结果:
package dp.builder.general;

abstract public class Builder {
	
	public abstract void buildPart1();

	public abstract void buildPart2();

	public abstract String retrieveResult();
}


实际的建造者:
package dp.builder.general;

public class ConcreteBuilder1 extends Builder {
	
	private Product1 product = new Product1();

	public void buildPart1() {
		product.setPart1("ConcreteBuilder1->part1");
	}

	public void buildPart2() {
		product.setPart2("ConcreteBuilder1->part2");
	}

	public String retrieveResult() {
		return product.toString();
	}
}


package dp.builder.general;

public class ConcreteBuilder2 extends Builder {
	
	private Product2 product = new Product2();

	public void buildPart1() {
		product.setPart1("ConcreteBuilder2->part1");
	}

	public void buildPart2() {
		product.setPart2("ConcreteBuilder2->part2");
	}

	public String retrieveResult() {
		return product.toString();
	}
}


然后,我们设置一个导演,它用来组织实际的建造者:
package dp.builder.general;

public class Director {

	private Builder builder;

	public Director(Builder builder) {
		this.builder = builder;
	}

	public void construct() {
		builder.buildPart1();

		builder.buildPart2();

		System.out.println(builder.retrieveResult());
	}
}


最后,客户端和导演以及建造者打交道,对于实际产品关闭:
package dp.builder.general;

public class Client {

	public static void main(String[] args) {
		Director director = null;
		
		System.out.println("****** Built By Concrete Builder 1 ******");
		Builder builder1 = new ConcreteBuilder1();
		director = new Director(builder1);
		director.construct();
		
		System.out.println("****** Built By Concrete Builder 2 ******");
		Builder builder2 = new ConcreteBuilder2();
		director = new Director(builder2);
		director.construct();

	}

}


运行结果:
****** Built By Concrete Builder 1 ******
Product1: ConcreteBuilder1->part1, ConcreteBuilder1->part2
****** Built By Concrete Builder 2 ******
Product2: ConcreteBuilder2->part1, ConcreteBuilder2->part2
分享到:
评论

相关推荐

    设计模式之建造者Builder模式

    **建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...

    C#设计模式之建造者(Builder)模式示例源代码

    在深入探讨C#设计模式中的建造者(Builder)模式之前,我们先来理解一下什么是设计模式。设计模式是在软件工程中解决常见问题的一种通用可重用解决方案,它们提供了一种标准化的方法来解决软件开发中遇到的挑战。...

    设计模式 创建型模式 Builder模式(建造者)

    Builder模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 统设计中,有时候面临着一个“复杂系统”的创建工作,该对象通常由各个部分的子对象用一定的算法构成,或者说按一定的...

    设计模式之建造者模式代码示例

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...

    设计模式C++学习之建造者模式(Builder)

    建造者模式(Builder)是设计模式中的一种结构型模式,它允许我们分步骤构建复杂的对象,而无需暴露构造过程。这种模式将构造过程与对象的表示分离,使得同样的构造过程可以创建不同的表示。在C++中,建造者模式通常...

    建造者模式c++实现

    建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在C++中实现建造者模式,我们可以遵循以下步骤: 首先,我们需要定义一个抽象建造者(Builder)类,它声明了一...

    设计模式——建造者模式

    建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...

    建造者模式【Builder Pattern】(一)问题提出

    建造者模式【Builder Pattern】是一种设计模式,它在软件工程中用于将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式在处理复杂对象的构造时特别有用,因为它允许我们通过分离构造...

    c++-设计模式之“建造者模式(Builder)”

    建造者模式(Builder Pattern)是一种创建型设计模式,允许使用多个简单的对象一步一步构建一个复杂的对象。它将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的组成 产品...

    建造者模式【Builder Pattern】(二)问题改进

    建造者模式(Builder Pattern)是一种创建型设计模式,它允许我们分步骤构建复杂对象,而无需暴露构造过程的细节。这种模式将一个复杂的构建过程分解为一系列简单的步骤,使得构造过程可以有不同的解释,从而实现...

    设计模式之建造者模式

    建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,通过将构造过程与对象本身分离,使得同样的构造过程可以创建不同的表示。这种模式常用于当创建对象的步骤复杂或者...

    Java建造者模式源码

    在Java中,我们可以看到Builder模式的应用,比如`StringBuilder`和`StringBuffer`,它们用于高效地构建字符串。 **建造者模式的核心组件包括:** 1. **产品(Product)**:这是要构建的复杂对象,它定义了对象的...

    建造者模式实例

    文件`BuilderPattern1`和`BuilderPattern`可能是示例代码或者进一步的解释,它们可能包含一个完整的建造者模式实现,包括产品类、抽象建造者、具体建造者和导演类的代码,以及如何在客户端使用这些类的例子。...

    建造者模式学习以及与工厂模式的区别

    此外,某些编程语言如Dart,其标准库中内置了Builder模式的概念,使得创建复杂对象更加便捷。 总结来说,建造者模式是一种强大的设计模式,它通过分离对象的构建过程和表示,使得复杂的对象创建变得更加灵活和可...

    69-Java设计模式之建造者 Builder1

    建造者模式(Builder Pattern)是Java设计模式中的一种,它属于创建型模式,主要用于构建复杂的对象。这种模式将对象的创建过程与表示分离,使得同样的创建过程可以创建不同的表示。在实际开发中,当我们需要创建的...

    Java设计模式-建造者模式详解

    Java设计模式-建造者模式详解 Java设计模式-建造者模式详解将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。...

    设计模式-建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...

    Java 设计模式-建造者模式(Builder)Android讲解

    建造者模式(Builder)是Java设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露其构造过程。在Android开发中,这种模式尤其有用,因为Android组件如Activity、Fragment等的初始化过程通常...

    Builder模式

    ### Builder模式:构建复杂对象的艺术 #### 概述 Builder模式是一种软件工程设计模式,它将复杂对象的构建过程与其表示分离,使同一构建过程能够创建出不同的表示。这一模式通常用于创建复合对象,通过子类继承和...

    ios 进阶 建造者模式

    在文件"01-builder模式"中,可能包含了关于建造者模式的实例代码、讲解文档或视频教程,这些内容可以帮助你深入理解建造者模式的实现和应用场景。例如,可能会演示如何使用建造者模式构建一个自定义的视图控制器,...

Global site tag (gtag.js) - Google Analytics