Director
/**
* 導演者
*/
public class Director {
private Builder builder;
/**
* 產品構造方法,負責調用各個零件的建造方法
*/
public void construct(){
builder = new ConcreateBuilder();
builder.buildPart1();
builder.buildPart2();
builder.retrieveResult();
//continue with other code
}
}
Builder
/**
* 建造者
*/
public abstract class Builder {
/**
* 產品零件建造方法
*/
public abstract void buildPart1();
/**
* 產品零件建造方法
*/
public abstract void buildPart2();
/**
* 產品返還方法
*/
public abstract Product retrieveResult();
}
ConcreateBuilder
/**
* 建造者
*/
public class ConcreateBuilder extends Builder {
private Product product = new Product();
/**
* 產品零件建造方法
*/
@Override
public void buildPart1() {
//build the first part of product
}
/**
* 產品零件建造方法
*/
@Override
public void buildPart2() {
//build the second part of product
}
/**
* 產品返回方法
*/
@Override
public Product retrieveResult() {
return product;
}
}
Product
/**
* 產品
*/
public class Product {
//anything pertaining to product
}