建造者模式例子
//抽象生产者
public interface Builder {
void buildPartA();
void buildPartB();
void buildPartC();
Product buildProduct();
}
//具体生产者
public class ConcreteBuilder implements Builder {
Product product;
@Override
public void buildPartA() {
}
@Override
public void buildPartB() {
}
@Override
public void buildPartC() {
}
@Override
public Product buildProduct() {
return product;
}
}
//产品由各个组件组成
public class Product {
//partA
//partB
//partC
}
//指导者,产品生产流程规范
public class Director {
Builder builder;
//由具体的生产者来生产产品
public Director(Builder builder) {
this.builder = builder;
}
//生产流程
public void buildProduct(){
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
public static void main(String[] args) {
//只需要关心具体建造者,无需关心产品内部构建流程。
//如果需要其他的复杂产品对象,只需要选择其他的建造者.
Builder builder = new ConcreteBuilder();
//把建造者注入指导者
Director director = new Director(builder);
//指导者负责流程把控
director.buildProduct();
// 建造者返回一个组合好的复杂产品对象
Product product = builder.buildProduct();
}