import New
产品类:一个比较复杂的对象,创建对象过程比较复杂,比较多的代码。
class Product {
private String name;
private String type;
public void showProduct(){
System.out.println("名称:"+name);
System.out.println("型号:"+type);
}
public void setName(String name) {
this.name = name;
}
public void setType(String type) {
this.type = type;
}
}
抽象建造者:建造的具体的方法由他的子类来实现,目的是为了方便拓展。一般包括两个方法,一个建造产品,一个返回产品。
abstract class Builder {
public abstract void setPart(String arg1, String arg2);
public abstract Product getProduct();
}
建造者:继承抽象建造者,实现组建产品,返回组建好的产品。
class ConcreteBuilder extends Builder {
private Product product = new Product();
public Product getProduct() {
return product;
}
public void setPart(String arg1, String arg2) {
product.setName(arg1);
product.setType(arg2);
}
}
导演类:调用建造者来组建产品,用来封装程序中最易便的部分
public class Director {
private Builder builder = new ConcreteBuilder();
public Product getAProduct(){
builder.setPart("宝马汽车","X7");
return builder.getProduct();
}
public Product getBProduct(){
builder.setPart("奥迪汽车","Q5");
return builder.getProduct();
}
}
与工厂类比较:
总体上,建造者模式仅仅只比工厂模式多了一个“导演类”的角色。在建造者模式的类图中,假如把这个导演类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。应用场景更复杂的类用导演类