第一步定义一个建造者类
package BuilderDP;
/**
*
*类必须要有注释、报告开发人、开发时间、功能描述
*类变量必须要有注释,说明这个变量的含义
*@author YangQuanqing
*Data:
*
*/
public abstract class Builder {
public abstract void buildPartA();
public abstract void buildPartB();
public abstract Product getResult();
}
第二步,定义一个产品
public class Product {
private static String TAG1="产品需要建造A配件";
private static String TAG2="产品需要建造B配件";
public void buildPartA()
{
System.out.println(TAG1);
}
public void buildPartB()
{
System.out.println(TAG2);
}
public void product()
{
System.out.println("产品创建如下:");
System.out.println(TAG1);
System.out.println(TAG2);
}
}
第三步,定义一个指挥者类
public class Director {
public void setBuilder(Builder builder)
{
//具体建造过程
builder.buildPartA();
builder.buildPartB();
}
}
第四步,具体的建造过程
public class ConcreteBuilderA extends Builder{
private Product p=new Product();
private static String TAG1="A产品创建部件A的具体算法";
private static String TAG2="A产品创建部件B的具体算法";
@Override
public void buildPartA() {
System.out.println(TAG1);
p.buildPartA();
}
@Override
public void buildPartB() {
System.out.println(TAG2);
p.buildPartB();
}
@Override
public Product getResult() {
return p;
}
}
public class ConcreteBuilderB extends Builder {
private static String TAG1="B产品创建部件A的具体算法";
private static String TAG2="B产品创建部件B的具体算法";
private Product p=new Product();
@Override
public void buildPartA() {
System.out.println(TAG1);
p.buildPartA();
}
@Override
public void buildPartB() {
System.out.println(TAG2);
p.buildPartB();
}
@Override
public Product getResult() {
return p;
}
}
第五步,客户端调用
public class Client {
private static Builder cba=new ConcreteBuilderA();
private static Builder cbb=new ConcreteBuilderB();
private static Director d=new Director();
public static void main(String[] args)
{
d.setBuilder(cba);
d.setBuilder(cbb);
}
}