建造者模式 Builder

建造者模式 Builder

動機(Motivation)

  • 在軟件系統中,有時候面臨着「一個複雜對象」的建立工做,其一般由各個部分的子對象用必定的算法構成;因爲需求的變化,這個複雜對象的各個部分常常面臨着劇烈的變化,可是將它們組合在一塊兒的算法卻相對穩定。
  • 如何應對這種變化?如何提供一種「封裝機制」來隔離出「複雜對象的各個部分」的變化,從而保持系統中的「穩定構建算法」不隨着需求的改變而改變?

模式定義

將一個複雜對象的構建與其表示相分離,使得一樣的構建過程(穩定)能夠建立不一樣的表示(變化)。——《設計模式》GoFjava

結構(Structure)

要點總結

  • Builder 模式主要用於「分步驟建立一個複雜的對象」。在這其中「分步驟」是一個穩定的算法,而複雜對象的各個部分則常常變化。
  • 變化點在哪裏,封裝哪裏——Builder 模式主要在於應對「複雜對象各個部分」的頻繁需求變更。其缺點在於難以應對「分步驟構建算法」的需求變更。
  • 在 Builder 模式中,要注意不一樣語言中構造器內調用虛函數的差異(C++ vs Java)。

代碼實現

模擬場景:汽車製造,製造寶馬車和奔馳車git

模擬場景類圖以下:github

建造者模式-示例代碼算法

建造者模式-示例代碼-測試設計模式

相關文章
相關標籤/搜索