從意圖上來說Facade模式是爲子系統中的一組藉口提供一個統一接口,而Adapter模式是將一個類的接口轉換成客戶希望的另外一個接口,使原本由於接口不兼容而不能一期工作的類可以一起工作。
從實現上來看都是通過包裝與對象聚集來實現。但兩者是不同的包裝。看看這兩個模式設計的一些不同因素:
Facade 模式 | Adapter 模式 | |
是否存在既有的類? | 是 | 是 |
是否必須按某個接口設計? | 否 | 是 |
對象需要多態行爲? | 否 | 可能 |
需要更簡單的接口? | 是 | 否 |
Facade 模式中的動機是簡化接口。而在Adapter模式中,儘管也是越簡單越好,但是設計必須遵循一個已有的接口iou,不能簡化熱核東西,即使肯呢個存在更簡單的接口。