java设计模式之命令模式

来源:互联网 发布:淘宝创立于哪一年 编辑:程序博客网 时间:2024/06/16 13:40

命令模式是行为性模式的一种,按名字的意思来解释这个模型就是帮助发命令,也就是实现发命令者和执行者之间的解耦。具体到实现我们需要一个发送命令的类,命令执行类以及命令类。发送的命令可以有很多种,所以命令要实现一个接口或者继承一个抽象类

public interface Command {/** * 命令只有一个方法就是执行 */public void exec();}
命令执行类,因为不同的命令可能对应不同的执行类,所以执行类也可以定义成接口或者抽象类
public interface CommandReceiver {public void receiver();}

最差的情况就是一个命令类的实现类就对应一个命令执行类,写着是比较麻烦,但是扩展性高,这里暂时这样写作为演示
public class DelReceiver implements CommandReceiver {@Overridepublic void receiver() {System.out.println("删除命令");}}
public class DelCommand implements Command {private DelReceiver del;public DelCommand(DelReceiver del) {this.del = del;}@Overridepublic void exec() {del.receiver();}}

接下来要实现发送命令的类

public class Invoker {private Command command;public void setCommand(Command command){this.command = command;}public void action(){command.exec();}}

最后写一个test类
public class test {public static void main(String[] args) {Command com = new DelCommand(new DelReceiver());Invoker inv = new Invoker();inv.setCommand(com);inv.action();}}

调用的时候很麻烦,但是这样下来命令模式应该是已经可以理解了。写到这里在对比一下前两篇的内容代理模式和策略模式,如果把这篇中的Invoker类作为Command类的功能扩展或者说是辅助功能,DelCommand类作为DelCommand功能扩展或者说是辅助功能,可以看做是双重代理(不同的是代理事项相同的接口),也有点是策略的两重实现(应该是更像这个),是不是有那么点!!(学习中的感觉,很可能是因为学习的不到位才有这种感觉,完全是为了自己的学习做记录)




0 0
原创粉丝点击