设计模式之建造模式

建造模式是对象的创建模式,建造模式可以将一个产品的内部表象和产品的生产过程分割开来,从而是一个建造过程生成具有不同的内部表象的产品

对象。

建造模式的结构如下类图所示:

在这个系统中,最终产品Product只有两个零件,即part1和part2,相应的建造方法也有两个:buildPart1()和buildPart2(),同时呢本模式涉及到四个角色,分别为:

*抽象建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成部分的建造,一般而言,此接口独立于应用程序的商业逻辑。

*具体建造者(Concrete Builder)角色:担任这个角色的是与应用程序紧密相关的一些类,它们在应用程序调用下创建产品的实例。

*导演者(Director)角色:担任这个角色的类调用具体建造者角色以创建产品对象,应当指出的是,导演者角色并没有产品类的具体知识。

真正拥有产品类的具体知识是具体建造者角色。

*产品(Product)角色:产品(Product)便是建造中的复杂对象,一般来说,一个系统中会有多于一个的产品类,而且这些产品类并不一定有共同

的接口,而完全可以是不相关联的。

以下给出这个系统比较简单的示意性源码:

Director:

package builder;

public class Director {

	private Builder builder;

	/**
	 * 产品构造方法,负责调用各个零件建造方法
	 */
	public void construct(){
		builder=new ConcreteBuilder();
		builder.buildPart1();
		builder.buildPart2();
		builder.retrieveResult();
		//continue with other code
	}
}

Builder:

package builder;

public abstract class Builder {

	/**
	 * 产品的零件建造方法
	 */
	public abstract void buildPart1();

	/**
	 * 产品零件建造方法
	 */
	public abstract void buildPart2();

	/**
	 * 产品返还方法
	 */
	public abstract  Product retrieveResult();
}

ConcreteBuilder:

package builder;

public class ConcreteBuilder extends Builder {

	private  Product product=new Product();

	/**
	 * 产品零件建造方法
	 */
	public void buildPart1() {
		//build the first part of the part
	}

	/**
	 * 产品零件建造方法
	 */
	public void buildPart2() {
		//build the second part of the product
	}

	/**
	 * 产品返还方法
	 */
	public Product retrieveResult() {
		return product;
	}

}

Product:

package builder;

public class Product {

	//Anything pertaining to this product

}

这些源码中,有许多的方法并没有实现,以及Product类中并没有任何属性或者方法,但并不影响其阅读性,在具体的建造过程中,才会出现对应的产品

以及相应的实现过程。

简单的建造模式,就是如此。

时间: 2024-11-04 04:02:27

设计模式之建造模式的相关文章

【设计模式】建造模式

引子 前几天陪朋友去装机店攒了一台电脑,看着装机工在那里熟练的装配着机器. 作为装机工,他们不用管你用的 CPU 是 Intel 还是 AMD,也不管你的显卡是 2000 千大元还是白送的,都能三下五除二的装配在一起. 一台 PC 就诞生了! 当然对于客户来说,你也不知道太多关于 PC 组装的细节. 这和建造模式是多么的相像啊! 定义与结构 GOF 给建造模式的定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 这句话说得很抽象,不好理解,其实它的意思可以理解为:

设计模式笔记——建造模式

定义:讲一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表示.  将构造复杂对象的过程和组成对象的部件解耦 使用情况,满足以下条件可以考虑使用建造模式搭建框架: 1.产品有复杂的内部结构 2.系统中对此产品的需求将来可能改变产品对象的内部结构构成 3.不能将产品的内部构造完全暴漏给客户,一是为了可用性,二是为了安全因素 建造模式的组成: 1.抽象建造者角色(Builder):用来规范产品对象的哥哥组成成分的建造.一般而言,此角色独立于应用程序的业务逻辑. 2. 具体建造角色(

JAVA设计模式之建造模式

在阎宏博士的<JAVA与模式>一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式.建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象(internal representation).不同的产品可以有不同的内部表象,也就是不同的零

一天一个设计模式:建造模式

概念: 建造模式是对象的创建模式,建造模式可以将一个产品的内部表象(个人理解,可以称为组件)与产品的生产分割开来,从而可以使一个建造过程生产出来具有不同内部表象的产品对象. 概念: 产品的内部表象: 产品不同组成成分构成(组件)这些零件可以是对象,也可以是非对象,称为内部表象(internal representation),不同的产品可以有不同的内部表象,也就是不同的零件,使用建造模式可以使客户端不需要知道生产的产品有哪些零件,每个产品的对应零件批次有什么不同,是怎么建造出来的,怎么组装产品.

C++设计模式之建造模式

#include <iostream>using namespace std; class ApplePhone { public: virtual void buildCamera()=0; virtual void buildRAM()=0; }; class Apple5S:public ApplePhone { public: Apple5S() { } ~Apple5S() { } void buildCamera() { cout<<"5S 像素是800w&q

设计模式之七:建造模式(Builder Pattern)

建造者模式就是将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示. 适用范围: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 当构造过程必须允许被构造的对象有不同表示时. 建造者模式里面有四个角色: Builder: 给出一个抽象接口,以规范产品对象的各个组成部分的建造.一般而言,此接口独立于应用程序的业务逻辑.模式中直接创建产品对象的具体创建者角色.具体创建者角色必须实现这个接口的所有方法:一个是建造方法,另一个是结果返还方法. ConcreteBu

设计模式:建造模式

原文地址:http://leihuang.org/2014/12/03/builder/ Creational 模式 物件的产生需要消耗系统资源,所以如何有效率的产生.管理 与操作物件,一直都是值得讨论的课题, Creational 模式即与物件的建立相关,在这个分类下的模式给出了一些指导原则及设计的方向.下面列举到的全属于Creational 模式 Simple Factory 模式 Abstract Factory 模式 Builder 模式 Factory Method 模式 Protot

设计模式之建造者模式

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.(转至<大话设计模式>). 学习这个模式后,不知觉得和之前的简单工厂模式做了对比,发现二者都是创建对象.但二者还是有所区别的,简单工厂模式是更具不同的情况创建不同的对象, 而建造者模式则主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部 的构建通常面临复杂的变化. 建造者模式的好处就是使得建造代码与表示代码分离,由于建造模式印厂了该产品是如何组装的,所以需要改变一个产品的内部表

设计模式——创建型模式

简单的说我们可以把23种设计模式可以归为三大类,分别是创建型模式.结构型模式和行为型模式. 今天,首先看一下创建型模式.创建型设计模式包括5种:单例模式(Singleton).工厂方法模式(Factory Method).抽象工厂模式(Abstract Factory).建造者模式(Builder).原型模式(Prototype).  1.单例模式(Singleton)        1)简介 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的软件设计模式.在它的核心结