2015-02-08 63 views
1

之間的適配器模式,我們改變對象的界面到另一個從另一個接口使用它。差指令和適配器模式

在命令模式,我們改變的目的是共同的命令界面的接口,提供了一個執行方法調用它沒有工作的真正方法。這不是適配器模式已經完成的完全相同的事情嗎?那麼命令模式的要點是什麼?

回答

2

Command設計模式用於解決如下問題:
- 如何通過請求配置(自定義)對象?
- 請求如何(ex)在運行時動態更改?

Command的要點是將請求從其調用者 中分離出來,並將其封裝在單獨的對象(命令接口)中。
然後,調用者動態地將一個請求委託給一個命令對象。

Adapter設計圖案(對象適配器)用於解決問題等:
- 如何可以將對象進行訪問,其具有不兼容接口
而不改變現有的接口?

Adapter點是通過一個單獨的對象 能夠適應一個不兼容的接口,即,(通過委託給)不相容接口實現我們的在以下方面需要 接口(目標)的工作。

Command的圖案是更類似於Strategy圖案,其中 解耦從它的上下文的算法和封裝它 在一個單獨的對象(戰略)。

如需進一步討論,請參閱學習 面向對象設計&在http://w3sdesign.com編程 GoF的設計模式記憶。

+0

我們可以說這兩種模式有相同的實現,但目標不同嗎? – 2015-02-08 12:55:20

+0

也許適配器(對象適配器)的實施是比較容易: 適配器模式實現了一個現有** **接口(目標)。 客戶端引用此接口,不需要更改。 Command模式定義了一個** new **接口(Command)並實現了不同的請求。 必須設計/實施/更改客戶端,以便它們將請求委託給其中一個不同的命令對象。 – GFranke 2015-02-09 02:12:42