你能解釋一下這個Extension Object Pattern以及它與Adapter模式的區別嗎?擴展對象模式和適配器模式有什麼區別?
似乎網絡中只有很少的資源解釋了擴展對象模式,其中大部分都有點混亂(至少對我而言)。
在此先感謝。
你能解釋一下這個Extension Object Pattern以及它與Adapter模式的區別嗎?擴展對象模式和適配器模式有什麼區別?
似乎網絡中只有很少的資源解釋了擴展對象模式,其中大部分都有點混亂(至少對我而言)。
在此先感謝。
的主要區別是在使用時間:
您會在軟件開發過程中使用的適配器,在情況下,你不能改變你引入一個適配器現有的接口。
擴展對象模式提供了這些更改,使您可以擴展已經部署的軟件。
此外,從文本您發佈:
適配器支持,以適應現有的接口。擴展對象模式支持 其他接口。擴展對象和適配器可以在需要將對象調整爲擴展接口的情況下一起工作 。
我想你可以從這張圖解釋擴展對象模式的更好的主意。
你可以看到,客戶端可以
當您比較適配器時,客戶端而不是現有的適配器。
您可以看到圖中列出的不同extensions
爲不同adapters
。
因此,適配器模式 - 客戶端粘貼到現有適配器。但在擴展對象模式中 - 客戶端從可用的擴展中查詢適配器。我希望我正確理解你的觀點。 – CommonMan
@CommonMan是的。也可以添加/刪除擴展名。 :)) –
@SweetWithrathne你也可以用這種方式實現適配器,你可以添加/刪除底層適配器(最近是我的軟件工程課程的要求之一)。 –
區別似乎是適配器隱藏了包裝對象,而用戶知道可擴展對象並明確查詢它是否具有某個功能的擴展對象。 – Bergi