读书人

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

发布时间: 2012-09-01 09:33:03 作者: 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();}}
?
1 楼 画荷听雨眠 2011-09-06 大哥,你这代码看的相当纠结啊。。。排排版会掉块肉么?。。。 2 楼 seagulls88 2011-09-06 靠,这样发帖存属浪费资源。。贴几行代码上来,CTRL+C CTRL+V 。

读书人网 >软件开发

热点推荐