设计模式笔记之五 命令模式
?
命令模式的定义: 将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
?
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();}}?