如果只看這句話很好理解,因爲對於很多對象而言都有這個需求,你需要逐步構建一個複雜對象。但同時也是我很不理解的一個模式,因爲看書或者一些BLOG都會有提到Director這個角色,而且例子中無一例外都是下面的樣式
class Director() {
void
Contract()
{
builder.creatB();
builder.CreatA();
}
};
剛開始看時感覺沒有什麼實際意義,爲什麼要這麼做,使用場景在哪兒?一般情況下是不需要的,客戶自己控制就可以,似乎也更加靈活。但一些複雜項目不可以,如不想讓調用者看到對象如何逐步構建,或者Director讓調用者重用相同的構建方式時 則可以加入Director方式;但Director不是必須的。個人意見是不要被Director矇蔽,很多時候沒有Director也是合適的Builder模式。
像StringBuilder不就是逐步構建一個String類嗎?但是調用者卻掌握了所有的構建過程。個人認爲StringBuilder的封裝才應該是Builder的精髓,屏蔽掉複雜的字符串/緩存操作,通過逐步append,insert等操作來逐步生成一個String類。