設計模式-Builder模式

GoF對Builder模式的定義是將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

如果只看這句話很好理解,因爲對於很多對象而言都有這個需求,你需要逐步構建一個複雜對象。但同時也是我很不理解的一個模式,因爲看書或者一些BLOG都會有提到Director這個角色,而且例子中無一例外都是下面的樣式

class Director() {

void Contract()

{

    builder.creatB();

    builder.CreatA();

}

};

剛開始看時感覺沒有什麼實際意義,爲什麼要這麼做,使用場景在哪兒?一般情況下是不需要的,客戶自己控制就可以,似乎也更加靈活。但一些複雜項目不可以,如不想讓調用者看到對象如何逐步構建,或者Director讓調用者重用相同的構建方式時 則可以加入Director方式;但Director不是必須的。個人意見是不要被Director矇蔽,很多時候沒有Director也是合適的Builder模式。

像StringBuilder不就是逐步構建一個String類嗎?但是調用者卻掌握了所有的構建過程。個人認爲StringBuilder的封裝才應該是Builder的精髓,屏蔽掉複雜的字符串/緩存操作,通過逐步append,insert等操作來逐步生成一個String類。











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章