1.定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
何时使用:一些基本部件不会变,而其组合经常变化的时候。
//具体产品
public class Product {
List<String> parts=new ArrayList<String>();
public void Add(String part){
parts.add(part);
}
public void Show(){
System.out.println("ALL:");
for (String part : parts) {
System.out.println(part);
}
}
}
//抽象建造者类
public interface Builder {
public void BuildPartA();
public void BuildPartB();
public Product GetResult();
}
//具体建造者类
public class ConcreteBuilder1 implements Builder {
private Product prodoct=new Product();
@Override
public void BuildPartA() {
prodoct.Add("A");
}
@Override
public void BuildPartB() {
prodoct.Add("B");
}
@Override
public Product GetResult() {
return prodoct;
}
}
public class ConcreteBuilder2 implements Builder{
private Product product=new Product();
@Override
public void BuildPartA() {
product.Add("X");
}
@Override
public void BuildPartB() {
product.Add("Y");
}
@Override
public Product GetResult() {
return product;
}
}
//指挥者类
public class Diretor {
public void Construct(Builder builder){
builder.BuildPartA();
builder.BuildPartB();
}
}
public class Client {
public static void main(String[] args) {
Diretor diretor=new Diretor();
Builder b1=new ConcreteBuilder1();
Builder b2=new ConcreteBuilder2();
diretor.Construct(b1);
Product p1=b1.GetResult();
p1.Show();
diretor.Construct(b2);
Product p2=b2.GetResult();
p2.Show();
}
}