建造者模式(builder pattern)使用多個簡單的物件一步一步構建成乙個複雜的物件。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。
乙個 builder 類會一步一步構造最終的物件。該 builder 類是獨立於其他物件的。
意圖:將乙個複雜的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。
主要解決:主要解決在軟體系統中,有時候面臨著"乙個複雜物件"的建立工作,其通常由各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。
何時使用:一些基本部件不會變,而其組合經常變化的時候。
如何解決:將變與不變分離開。
關鍵**:建造者:建立和提供例項,導演:管理建造出來的例項的依賴關係。
應用例項:1、去肯德基,漢堡、可樂、薯條、炸雞翅等是不變的,而其組合是經常變化的,生成出所謂的"**"。 2、j**a 中的 stringbuilder。
優點:1、建造者獨立,易擴充套件。 2、便於控制細節風險。
缺點:1、產品必須有共同點,範圍有限制。 2、如內部變化複雜,會有很多的建造類。
使用場景:1、需要生成的物件具有複雜的內部結構。 2、需要生成的物件內部屬性本身相互依賴。
注意事項:與工廠模式的區別是:建造者模式更加關注與零件裝配的順序。
我們假設乙個快餐店的商業案例,其中,乙個典型的**可以是乙個漢堡(burger)和一杯冷飲(cold drink)。漢堡(burger)可以是素食漢堡(veg burger)或雞肉漢堡(chicken burger),它們是包在紙盒中。冷飲(cold drink)可以是可口可樂(coke)或百事可樂(pepsi),它們是裝在瓶子中。
我們將建立乙個表示食物條目(比如漢堡和冷飲)的 item 介面和實現 item 介面的實體類,以及乙個表示食物包裝的 packing 介面和實現 packing介面的實體類,漢堡是包在紙盒中,冷飲是裝在瓶子中。
然後我們建立乙個 meal 類,帶有 item 的 arraylist 和乙個通過結合 item 來建立不同型別的 meal 物件的 mealbuilder。builderpatterndemo,我們的演示類使用 mealbuilder 來建立乙個 meal。
建造者模式
1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...
建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
建造者模式
建造者模式將複雜物件的構建和它的表示分離,使同樣的構建過程能夠構建出不同的表示。以乙個建造小人為例子,可以建造2種小人,胖子和瘦子 include using namespace std class builder 抽象建造者類 class buildthinman public builder 瘦...