建造者設計模式
阿新 • • 發佈:2018-12-09
1.建造者模式分析
重點:和工廠模式的不同就是建造者模式是強調有順序的
1 ) 先建立一個具體的產品物件類:
②然後再寫抽象建造者類(定義了產品的建立方法和返回方法)
③要寫具體建造者(實現上面的抽象介面,具體實現構建和裝配各個部件),可以寫多個不同的具體建造者
④接著編寫指揮者類
建造者模式的結構中還引入了一個指揮者類Director,該類的作用主要有兩個:一方面它隔離了客戶與生產過程;另一方面它負責控制產品的生成過程。指揮者針對抽象建造者程式設計,客戶端只需要知道具體建造者的型別,即可通過指揮者類呼叫建造者的相關方法,返回一個完整的產品物件。
解釋 :和工廠模式的不同就是建造者模式是強調有順序的
你看下面的construct方法裡面的,很明顯是有順序的執行某個具體的builder的一系列方法(這樣的話,product的各個部件的形成是有順序的)
⑤最後客戶端類程式碼片段:
在客戶端程式碼中,無須關心產品物件的具體組裝過程,只需確定具體建造者(ConcreteBuilder )的型別即可,建造者模式將複雜物件的構建與物件的表現分離開來,這樣使得同樣的構建過程可以創建出不同的表現。
2.建造者模式的優缺點
答:優點:
①客戶端不必知道產品內部組成的細節,將產品本身與產品的建立過程解耦,使得相同的建立過程可以建立不同的產品物件。
② 每一個具體建造者都相對獨立,而與其他的具體建造者無關
③ 可以更加精細地控制產品的建立過程 。將複雜產品的建立步驟分解在不同的方法中,使得建立過程更加清晰,也更方便使用程式來控制建立過程。
④ 增加新的具體建造者無須修改原有類庫的程式碼,指揮者類針對抽象建造者類程式設計,系統擴充套件方便,符合 “開閉原則”
缺點:
①產品之間差異性很大的情況:建造者模式所建立的產品一般具有較多的共同點,其組成部分相似,如果產品之間的差異性很大,則不適合使用建造者模式,因此其使用範圍受到一定的限制。
② 產品內部變化很複雜的情況: 如果產品的內部變化複雜,可能會導致需要定義很多具體建造者類來實現這種變化,導致系統變得很龐大。