1. 程式人生 > >建造者模式、工廠模式、中介者模式區別

建造者模式、工廠模式、中介者模式區別

建造者模式:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

建造者模式包含如下角色:
Builder:抽象建造者
ConcreteBuilder:具體建造者
Director:指揮者
Product:產品角色

建造者模式的結構中還引入了一個指揮者類Director,該類的作用主要有兩個:
一、它隔離客戶與生產過程;
二、它負責控制產品的生成過程。指揮者針對抽象建造者程式設計,客戶端只需要知道具體建造者的型別,無須關心產品物件的具體組裝過程,即可通過指揮者類呼叫建造者的相關方法,返回一個完整的產品物件。

建造者模式與抽象工廠模式的比較:
與抽象工廠模式相比, 建造者模式返回一個組裝好的完整產品 ,而抽象工廠模式返回一系列相關的產品,這些產品位於不同的產品等級結構,構成了一個產品族。
在抽象工廠模式中,客戶端例項化工廠類,然後呼叫工廠方法獲取所需產品物件,而在建造者模式中,客戶端可以不直接呼叫建造者的相關方法,而是通過指揮者類來指導如何生成物件,包括物件的組裝過程和建造步驟,它側重於一步步構造一個複雜物件,返回一個完整的物件。
如果將抽象工廠模式看成汽車配件生產工廠 ,生產一個產品族的產品,那麼建造者模式就是一個汽車組裝工廠 ,通過對部件的組裝可以返回一輛完整的汽車。

外觀模式和中介者模式比較:
外觀模式處理的是類之間複雜的依賴關係,中介者模式處理的是物件之間複雜的互動關係