命令模式
来源:互联网 发布:淘宝大号一年能刷几单 编辑:程序博客网 时间:2024/06/05 16:20
Java之命令模式(Command Pattern)
1.概念
将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。
在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。
但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。
Command模式可应用于
a)整个调用过程比较繁杂,或者存在多处这种调用。这时,使用Command类对该调用加以封装,便于功能的再利用。
b)调用前后需要对调用参数进行某些处理。
c)调用前后需要进行某些额外处理,比如日志,缓存,记录历史操作等。
Command模式有如下效果:
a)将调用操作的对象和知道如何实现该操作的对象解耦。
b)Command是头等对象。他们可以像其他对象一样被操作和扩展。
c)你可将多个命令装配成一个符合命令。
d)增加新的Command很容易,因为这无需改变现有的类。
2.UML
3.代码
public interface Command { public void execute();}public class ConcreteCommand implements Command { private Receiver receiver = null; private String state; public ConcreteCommand(Receiver receiver){ this.receiver = receiver; } public void execute() { receiver.action(); }}public class Receiver { public void action(){ //真正执行命令操作的功能代码 }}public class Invoker { private Command command = null; public void setCommand(Command command) { this.command = command; } public void runCommand() { command.execute(); }}public class Client { public void assemble(){ //创建接收者 Receiver receiver = new Receiver(); //创建命令对象,设定它的接收者 Command command = new ConcreteCommand(receiver); //创建Invoker,把命令对象设置进去 Invoker invoker = new Invoker(); invoker.setCommand(command); }}
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- tcp遭遇的问题
- oracle数据库运维配置脚本大纲
- C#多线程和线程安全问题
- Poj 2304 Combination Lock(模拟顺、逆时钟开组合锁)
- IOS NSString 用法详解
- 命令模式
- uva 305 Pseudo-Random Numbers
- 菜鸟收藏:windows 8与win 7最大的22个功能区别【乡巴佬】
- webpy session 判断登陆示例,报错attributeError: 'ThreadedDict' object has no attribute
- 仿真器件类库归属
- Autodesk面试技术题解答
- Android 如何去掉手机中横竖屏切换时的转屏动画?
- PythonChallenge 挑战之路 Level-23
- 上拉加载 下拉刷新