码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之建造模式

时间:2015-04-10 09:36:29      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:设计模式   java   

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

对象。

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

技术分享

这个系统中,最终产品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类中并没有任何属性或者方法,但并不影响其阅读性,在具体的建造过程中,才会出现对应的产品

以及相应的实现过程。

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

设计模式之建造模式

标签:设计模式   java   

原文地址:http://blog.csdn.net/u012734441/article/details/44974451

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!