1
A
回答
4
最大的原因是它违反了单一责任原则。客户参与者和调解者参与者都有各自的责任,并且对其中一个的改变会影响另一个。
0
1)客户的主要责任是正确实施Invoker,Receiver和Command对象,然后在适当的地点和时间启动执行程序。
它可以,例如,是这样的祈求这个
class Client {
...
invoker.executeCommand()
...
}
2)主要职责是在调用特定的顺序Command对象的一个或多个命令的方法。
例如,
class Invoker {
...
command.command1();
command.command2();
command.command3();
...
}
让我们考虑,例如,java.awt.event.KeyListener类。它是按照下面的顺序调用三种方法:
keyPressed(KeyEvent e)
keyTyped(KeyEvent e)
keyReleased(KeyEvent e)
这个监听器祈求类可能是:正确实例化的EventObject,KeyListener的和KeyInvocation然后
class KeyInvocation {
KeyListener listener;
void invokeKey(EventObject e) {
listener.keyPressed(e);
listener.keyTyped(e);
listener.keyReleased(e);
}
}
与此同时Client类应在适当的执行地点和时间invokeKey方法。
当然,Invoker是命令模式的附加层。 在Command模式更简单的情况下,我们可以跳过Invoker类并完成客户端的所有工作。
相关问题
- 1. 设计模式 - 客户端服务器 - 命令模式
- 2. GUI和命令行SVN客户端
- 3. setTimeout客户端使用命令
- 4. 为什么客户端在Command模式中没有引用调用者?
- 5. 如何在UNet(Unity)中的客户端调用[命令]
- 6. 如何在WinForms客户端应用程序中使用命令模式?
- 7. ASP.net客户端ID模式
- 8. Mongodb c#客户端模式
- 9. 远程Informix 11.5命令行客户端
- 10. 从MySQL客户端执行shell命令?
- 11. node redis客户端HSET命令失败
- 12. 寻找命令行ftp客户端(linux)
- 13. 命令行JMX客户端设置值
- 14. Netbeans CVS客户端的命令
- 15. 命令模式如何用不同的请求参数化客户端?
- 16. 模拟弹性客户端调用
- 17. Keycloak - 身份提供者和客户端
- 18. GPRS调制解调器作为TCP客户端最终命令不起作用
- 19. Mercurial命令行客户端,从文件中读取命令,选项和参数?
- 20. c#wcf从另一个客户端调用客户端回调
- 21. 如何在MySQL命令行客户端中更改用户
- 22. 找不到客户端令牌,请设置客户端令牌
- 23. 简化客户端框架/模式以简化异步调用?
- 24. 为什么命令模式客户端可以直接从reciever实例调用该方法?
- 25. Perforce恢复操作给客户端未知。与P4客户端命令
- 26. 同时使用用户名令牌和客户端证书的WCF SOAP调用
- 27. 胖客户端的设计模式 - 瘦客户端使用通用代码?
- 28. 客户端 - 调用函数
- 29. .NET soap客户端调用
- 30. 从客户端调用servlet
[Command Design Pattern - Is Invoker Optional?]的可能的副本(http://stackoverflow.com/questions/12879609/command-design-pattern-is-invoker-optional)。这是更早,但其他有更多的信息。 – outis 2015-07-18 21:03:18