建造模式涉及以下四个角色,它们分别是:
- 抽象建造者角色:这个角色用来规范产品对象的各个组成成分的建造。一般而言,此角色独立于应用程序的商业逻辑。
- 具体建造者角色:担任这个角色的是于应用程序紧密相关的类,它们在指导者的调用下创建产品实例。这个角色在实现抽象建造者角色提供的方法的前提下,达到完成产品组装,提供成品的功能。
- 指导者角色:调用具体建造者角色以创建产品对象。指导者并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者对象。 产品角色:建造中的复杂对象。它要包含那些定义组件的类,包括将这些组件装配成产品的接口。
- 产品角色:产品是建造中的复杂对象,一般来说,一个系统会有多于一个产品。于是我们可以用一个表识类来抽象产品。
Builder.java
package com.javapatterns.builder;
abstract public class Builder
{
public abstract void buildPart1();
public abstract void buildPart2();
public abstract Product retrieveResult();
}
ConcreteBuilder .java
package com.javapatterns.builder;
public class ConcreteBuilder extends Builder
{
/**
* @label Creates
*/
private Product product = new Product() ;
public void buildPart1()
{
//build the first part of the product
}
public void buildPart2()
{
//build the second part of the product
}
public Product retrieveResult()
{
return product;
}
}
Director.java
package com.javapatterns.builder;
public class Director
{
/**
* @link aggregation
* @directed
* @clientRole builder*/
private Builder builder;
public Director(Builder builder)
{
this.builder = builder;
}
public void construct()
{
builder = new ConcreteBuilder();
builder.buildPart1();
builder.buildPart2();
builder.retrieveResult();
//continue with other code
}
}
Product.java
package com.javapatterns.builder;
public class Product
{
public Product()
{
//Write your code here
}
}