在构建具有复杂结构的物体时,很难一气呵成,我们需要首先建造组成这个物体的各个部分,然后分阶段将它们组装起来。
Builder模式时用于组装具有复杂结构实例的模式。
示例:使用Builder模式编写“文档”程序,这里编写的文档具有以下结构:
1.含有一个标题
2.含有几个字符串
3.含有条目项目
Builder类:抽象类,并没有进行任何处理,仅仅声明了抽象方法,Builder类的子类决定了用来编写文档的具体处理。
package Builder;
//抽象类。声明该类的一系列抽象方法
public abstract class Builder {
public abstract void makeTitle(String title);
public abstract void makeString(String str);
public abstract void makeItem(String[] items);
public abstract void close();
}
Director类:使用Builder类中声明的方法来编写文档。其构造函数的参数是Builder 类型的,因为Builder类是抽象类,所以在传参时并不传入Builder的实例,而是传入Builder类子类的实例,Builder类的子类决定了文档具体的编写形式,construct方法中都是调用Builder类中的方法,即此方法将各组件生成的方法组装在一起。
package Builder;
//对外接口,外部通过此类调用已实现的功能,在Director构造函数的参数中传入Builder类型的实例,通过该实例调用方法,
public class Director {
private Builder builder;
public Director(Builder builder) {
// TODO Auto-generated constructor stub
this.builder = builder;
}
public void construct(){
builder.makeTitle("Greeting");
builder.makeString(