當我們想要建構出一個比較複雜的結果
或是想對相同內容提供不同的輸出樣式,就可以使用Builder Pattern
其流程是
1.先產生一個Builder類別,在Builder內
提供各種基本method
2.再產生一個組合程式用的Director類別
在Director內組合各式的builder 功能,來產生一個比較複雜的結果
外部程式只要操作Director就可以得到想要的結果
3.如果要讓同樣的內容可以產生不同格式的輸出
可以繼承Builder產生各式的Builder類別,來產生不同形式的輸出樣式
參與者
1.Builder
抽象類別,規範了要提供給Director操作的的各項method
class abstract Builder{
public abstract makeTitle(String _title);
public abstract makeBody(String _body);
public abstract makeLine();
public abstract Object getResult();
}
2.TextBuilder
繼承自Builder,並把相關method都實作出來
class abstract TextBuilder extends Builder{
private StringBuffer buffer=new StringBuffer()
public makeTitle(String _title){
buffer.append(_title)
};
public makeBody(String _body){..};
public makeLine(){..};
public Object getResult(){
return buffer.toString();
};
}
3.Director
實體類別,在內部操作並組合各種Builder的method產生所要的結果
在Director只操作Builder類別的method,不可操作builder的子類別專屬method
class Director{
private Builder builder;
public Director(Builder builder){
this.builder=builder;
}
public void setData(String _title,String _body){
builder.makeLine();
builder.makeTitle(_title);
builder.makeBody(_body);
builder.makeLine();
}
public void show(){
System.out.println(builder.getResult().toString());
}
}
4.Main外部程式
Director director=new Director(new TextBuilder());
director.setData("title","body");
director.show();
沒有留言:
張貼留言