1.現實問題
面向對象編程總是和現實問題的解決思想一致的。
汽車是如何產生的?這個問題在學習工廠模式中已經舉過例子。我再重新分析一下,看看有何不同。
Factory模式中:
1.有一個抽象的工廠。
2.實現一個具體的工廠---汽車工廠。
3.工廠生產汽車A,得到汽車產品A。
4.工廠生產汽車B,得到汽車產品B。
這樣做,實現了購買者和生產線的隔離。
Builder模式:
1.離合器工廠生產離合器產品,得到汽車部件A。
2.輪胎工廠生產輪子產品,得到汽車部件B。
3.車身工廠生產車身產品,得到汽車部件C。
4.將這些部件放到一起,形成剛好能夠組裝成一輛汽車的整體。
5.將這個整體送到汽車組裝工廠,得到一個汽車產品。
或者更抽象一點理解:
1.將汽車的每一個零件都送到汽車組裝工廠。
2.在工廠里,組裝離合器,得到汽車部件A。
3.在工廠里,組裝輪胎,得到汽車部件B。
4.在工廠里,組裝車身,得到汽車部件C。
5.在工廠里,組裝每個部件,得到一個汽車產品。
這樣做,目的是為了實現復雜對象生產線和其部件的解耦。
二者不同在于:
Factory模式不考慮對象的組裝過程,而直接生成一個我想要的對象。
Builder模式先一個個的創建對象的每一個部件,再統一組裝成一個對象。
Factory模式所解決的問題是,工廠生產產品。而Builder模式所解決的問題是工廠控制產品生成器組裝各個部件的過程,然后從產品生成器中得到產品。
2.開闊天空
我在學習的時候,把代碼例子認真的讀了一遍,便豁然開朗。
學習模式的目的在于了解此模式究竟為何模式。了解了此模式的結構已足矣。給我的感覺,模式就是一種思想。學習一個模式,花上一兩個小時把此模式的意思理解了,就夠了。其精華的所在會在以后工作的設計中逐漸體現出來。
首先,當一個產品(對象)的創建過程很復雜的時候,且這個產品的實現需要分別實現幾個不同的部件。這個時候,我們考慮用到Builder模式。具體實現過程的例子如下:
Product: 復雜對象類。我們最終就是為了得到它的一個對象。我叫它產品。




Part: 復雜對象的部件接口。沒準有幾種。體現對象的復雜性。即產品部件。





CarBuilder: 復雜對象的構建接口。Builder模式的重要體現之一---產品生成器。














MazidaBuilder: 具體的產品生成器對象。



























ConstructFactory: Builder模式的重要體現之二---產品組裝工廠。



















Temple:












理解Builder模式,主要就是理解上面這幾個過程。
Builder模式不是很常用。模式本身就是一種思想。知道了就可以了。
歡迎來訪!^.^!
本BLOG僅用于個人學習交流!
目的在于記錄個人成長.
所有文字均屬于個人理解.
如有錯誤,望多多指教!不勝感激!