大話設計 建造者模式

2022-01-18 10:28:19 字數 1600 閱讀 5000

【官方解釋建造者模式】

名稱:builder pattern

定義:將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

圖示:

理解:builder是為建造乙個product物件的各個部件指定的抽象介面。concretebuilder是具體的建造者,實現builder介面,構造和裝配的各個部件。director是指揮者,用來根據使用者的需求構建物件(建造乙個使用builder介面的物件)。

【自我感悟建造者模式】

花了一天多的時間,學習了建造者模式,大話上先是從小菜、大鳥吃飯引出來的主題:小菜和大鳥分別到餐館點了炒飯和炒麵。但是大鳥很點背,點的炒飯沒有味道(老闆忘記放鹽)......當然這只是生活中再平常不過的一件小事了,卻是普遍發生。對比,麥當勞、肯德基從沒有出現同樣的問題,原因在於後者嚴格按照一定的工序做事,但是中式做飯各式各樣,摸不著套路。就我個人來說,特別愛吃宮保雞丁,但是去不同的飯店點同一道菜,每次吃的味道都不一樣,感覺都找不到真愛了,還是最喜歡吃姨夫做的。(哈哈,扯遠了,不過,就是這麼回事啊。)如果,建造者模式從一開始就植入大家的思想裡,相信就不會出現這樣的情況啦。

建造者模式,說白了就是用於建立一些複雜的物件,這些物件內部構建間的構造順序通常是穩定的,但是物件內部構建通常面臨著複雜的變化。

舉個例子:比方說,我是房屋裝修公司的一名designer,我就應該首先設計一套固定的裝飾方案(明確的裝飾流程),這樣才能保證效率而不至於每次設計時無從下手沒有頭緒。當然,核心是滿足顧客需求。房屋裝修無外乎是要考慮:牆面粉刷、室內設計等,作為設計者需要根據客戶提供的具體個人偏好進行施工,比如說,用什麼顏色的牆面漆、地板磚要什麼風格的、家具如何擺放等。

**思路:首先要定義builder抽象類,作為director(具體設計師)使用的介面(體現了物件導向的封裝性);而後是具體建造者的角色,他的任務是根據使用者需求具體設計實現介面,構建需要的各個類、部件。然後在客戶端顯示即可啦。最後,讓客戶看到的是裝修完成的效果即可,中間過程是不面向客戶的。(純屬個人理解,如有不當之處還望大家批評指教!)

//抽象建造者類,確定產品是由兩道工序(噴漆和室內設計)組成,並得到最後結果的方法getresult

abstract class builder

//具體建造者

class concreatbuilder1 : builder

public override void buildpartb()

public override housedecoration getresult()

}class concreatbuilder2 : builder

public override void buildpartb()

public override housedecoration getresult()

}

//指揮者

class director

}

體會:學習了好幾個模式了,接觸最多,體會最深的就是物件導向的思想。大話這本書,最大的特點就是通過生活中的情節引出乙個個的知識點,大大吸引像我這樣不愛讀書的孩紙。它從另乙個方面教會我們:知識源於生活又高於生活,學會編織知識網。

大話設計模式 建造者模式

1 建造者模式 builder 又叫生成器模式,它是將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的比奧斯。如果我們用了建造者模式,那麼使用者就只需指定需要建造的型別就可以得到它們,而具體建造的過程和細節就不需知道了。2 建造者模式 builder 結構圖 3 建造者模式主要是用...

大話設計模式 建造者模式

我們在建造的過程是基本穩定的,不需要大變動,只要是人這個類不管是胖瘦,都得有頭身手腳。但是具體的一些細節是不同的,有高矮胖瘦 長腿長胳膊,對於使用者來說他最終要的是結果,你只管建就可以了,在這樣的需求下我們要將這個複雜物件的構建和其表示分離開來,使得同樣的構建過程能創造更多的表示方法,滿足不同使用者...

《大話設計模式》 建造者模式

題目 建造兩個產品,這兩個產品都有兩個部件 abstract class builder public class concretebuilder1 extends builder override public void buildpartb override public product get...