結構型模式的思路是組合,而根據組合側重的不同方面,分為了不同的模式,
-
結構型模式的思路和行為型模式中的模板方法模式有一定相似性,尤其是在實作具體的函式時,不過不同之處在于模板方法模式采用的是繼承,并且它們的目的也不一樣,結構型模式的目的是擴展、增減功能,而模板方法模式的目的是泛化通用流程,
-
代理模式組合了一個提供具體功能的物件,然后為其它物件提供相同的介面;可以通過代理模式進行快取、記錄log、訪問限制等操作,但主要的功能還是由其內部持有的提供服務的物件提供的,
-
由于代理物件和服務物件遵循相同的介面,因此它們可以互換,
-
相比之下裝飾器物件盡管和源服務物件擁有相同的介面,但它們無法互換使用,原因在于裝飾器物件依賴源物件來提供服務,裝飾器物件本身能夠增強服務功能,但并沒有真正實作服務功能,它是依賴于服務物件來實作功能的;這導致裝飾器模式受宣告順序的影響,
-
裝飾器模式像是個單鏈表,
-
可以宣告多個裝飾器類并動態配置裝飾器物件,
-
配接器模式與代理模式和裝飾器模式相比仍然依賴已有服務物件來提供功能,但不同的是,配接器物件使用已有服務來提供新的功能而不是實作與現有服務物件相同的介面,配接器模式一般用于實作需要用到遺留系統的功能的新的需求,
-
門面模式也提供新的功能,與配接器不同的是:配接器通常只封裝一個服務物件, 而門面物件作用的范圍更廣,通常會作用于整個物件子系統上,
代理模式

裝飾模式
class Application is
method dumbUsageExample() is
source = new FileDataSource("somefile.dat")
source.writeData(salaryRecords)
// 已將明碼資料寫入目標檔案,
source = new CompressionDecorator(source)
source.writeData(salaryRecords)
// 已將壓縮資料寫入目標檔案,
source = new EncryptionDecorator(source)
// 源變數中現在包含:
// Encryption > Compression > FileDataSource
source.writeData(salaryRecords)
// 已將壓縮且加密的資料寫入目標檔案,

配接器模式

比如,已有服務能夠處理某種格式的資料,而新的業務要求使用另外一種格式,此時就可以創建配接器類來對資料格式進行轉換,使得仍然能夠復用已有服務來處理新需求,
門面(外觀)模式

參考
- refactoringguru.cn/design-patterns
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/556748.html
標籤:設計模式
上一篇:讀發布!設計與部署穩定的分布式系統(第2版)筆記21_實體層之配置
下一篇:返回列表
