還分不清適配器模式和裝飾者模式?用一張表給你說明白
適配器模式 | 裝飾者模式 | |
---|---|---|
關鍵字 | 改接口,重複利用,包裝模式 | 不改接口,增強行爲,包裝模式 |
定義 | 適配器模式將一個類的接口,轉換爲客戶期望的另一個接口,適配器讓原本接口不兼容的類可以合作無間。 | 裝飾者模式允許用戶用組合的方式而不是繼承對已有的類的功能進行擴展,擴展後的類爲裝飾者,被擴展的類爲被裝飾者,裝飾者與被裝飾者具有相同的方法簽名,而且有自己另外的方法。 |
模式動機 | 適配器修改被適配類的接口讓被適配類更容易讓客戶端調用 | 裝飾者與被裝飾者有相同的接口,在不改變被裝飾者的代碼的同時又能給被裝飾者添加新的行爲 |
實現方法 | 適配器通過組合或者繼承的方式擁有被適配類的方法,調用這些方法提供客戶需要的接口 | 裝飾者與被裝飾者實現相同的接口,裝飾者通過組合擁有被裝飾者實例 |
具體應用場景 | JAVA中InputStreamReader 和 OutputStreamWriter類使用了適配器模式 | JAVA中的IO字節流的InputStream類族的實現使用了裝飾者模式 |