2015-02-08 58 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