在适配器模式中,我们将对象的接口更改为另一个对象,以便从另一个接口使用它。
在命令模式中,我们将对象的接口更改为通用的命令接口,提供一个执行方法来调用真正的方法来完成工作。这不是适配器模式已经做的完全一样的事情吗?那么命令模式有什么意义呢?
设计Command模式用于解决以下问题:
- 如何根据请求配置(定制)对象?
- 请求如何在运行时动态更改?
要点Command是将请求与其调用者解耦,并将其封装在单独的对象(Command 接口)中。
然后,调用者动态地将请求委托给命令对象。
设计Adapter模式(对象适配器)用于解决以下问题: - 如何
在不更改现有接口的情况下
访问具有不兼容接口的对象?
要点Adapter是通过一个单独的对象来适应不兼容的接口,即根据(通过委托)不兼容的接口来实现我们所需的接口(目标)。
该Command模式更类似于Strategy模式,它将算法与其上下文解耦,并将其封装在一个单独的对象(Strategy)中。
如需进一步讨论,请参阅用于学习面向对象设计和编程的 GoF 设计模式记忆,网址为:http://w3sdesign.com。