設計模式-Builder模式

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

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

class Director() {app

void Contract()ui

{spa

    builder.creatB();code

    builder.CreatA();對象

}字符串

};it

剛開始看時感受沒有什麼實際意義,爲何要這麼作,使用場景在哪兒?通常狀況下是不須要的,客戶本身控制就能夠,彷佛也更加靈活。但一些複雜項目不能夠,如不想讓調用者看到對象如何逐步構建,或者Director讓調用者重用相同的構建方式時 則能夠加入Director方式;但Director不是必須的。我的意見是不要被Director矇蔽,不少時候沒有Director也是合適的Builder模式。class

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

相關文章
相關標籤/搜索