读书人

设计形式笔记之五 命令模式

发布时间: 2012-08-26 16:48:06 作者: rapoo

设计模式笔记之五 命令模式

?

命令模式的定义: 将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

?

UML图(暂略)

?

例子:

?

/** * 命令接口类 */public interface ICommand {/** * 执行接口 */public void execute();/** * 撤销接口 */public void undo();}/** * 具体的命令实现类1 */public class ConcreteCommand1 implements ICommand {private Receiver1 receiver;public ConcreteCommand1(Receiver1 receiver) {this.receiver = receiver;}@Overridepublic void execute() {System.out.println("ConcreteCommand1 execute...");receiver.doSomething();}@Overridepublic void undo() {System.out.println("ConcreteCommand1 undo...");receiver.doSomething2();}}/** * 具体的命令实现类2 */public class ConcreteCommand2 implements ICommand {private Receiver2 receiver;public ConcreteCommand2(Receiver2 receiver) {this.receiver = receiver;}@Overridepublic void execute() {System.out.println("ConcreteCommand2 execute...");receiver.doSomething();}@Overridepublic void undo() {System.out.println("ConcreteCommand2 undo...");receiver.doSomething2();}}/** * 命令接收者1 */public class Receiver1 {/** * 命令具体实现 */public void doSomething() {System.out.println("Receiver1 doSomething...");}/** * 命令具体实现 */public void doSomething2() {System.out.println("Receiver1 doSomething2...");}}/** * 命令接收者2 */public class Receiver2 {/** * 命令具体实现 */public void doSomething() {System.out.println("Receiver2 doSomething...");}/** * 命令具体实现 */public void doSomething2() {System.out.println("Receiver2 doSomething2...");}}/** * 命令模式的使用 */public class TestCommand {/** * @param args */public static void main(String[] args) {ICommand command1 = new ConcreteCommand1(new Receiver1());command1.execute();command1.undo();ICommand command2 = new ConcreteCommand2(new Receiver2());command2.execute();command2.undo();}}

?

读书人网 >软件开发

热点推荐