前言
建造者模式,将一個複雜對象的建構與它的表示分離,使得同樣的建構過程可以建立不同的表示。
結構圖
Builder是為建立一個Product對象的各個部件指定的抽象接口。
ConcreteBuilder是具體的建造者,實作Builder接口,構造和裝配各個部件。可以有多個不同的具體的建造者。
Product具體産品角色
Director就是建構一個使用Builder接口的對象。
代碼實作
首先來看一下産品類
第一個Add方法主要是為産品添加部件
第二個Show就是展示産品所擁有的部件
Builder類---抽象建造類,确定産品由兩個部件PartA和PartB組成,并聲明一個得到産品建造後結果的方法GetResult。
ConcreteBuilder1---具體建造者類
ConcreteBuilder2----具體建造者類
Director---指揮者類
用戶端代碼,用戶端不需知道具體的建造過程。
最終運作效果
總結
主要是用于建立一些複雜的對象,這些對象内部建構間的建造順序通常是穩定的, 但對象内部的建構通常是穩定的, 但對象内部的建構通常面臨着複雜的變化。
建造者模式的好處就是使得建造代碼與表示代碼分離,由于建造者隐藏了該産品是如何組裝的, 是以若需要改變一個産品的内部表示,隻需要再定義一個具體的建造着就可以了。