欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > >内容正文

asp.net

command命令设计模式 -凯发k8官方网

发布时间:2025/1/21 24 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 command命令设计模式 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

执行一步操作后,回滚或撤销

public abstract class command {public abstract void doit(); //exec runpublic abstract void undo(); } public class content {string msg = "hello everybody "; } public class copycommand extends command {content c;public copycommand(content c) {this.c = c;}@overridepublic void doit() {c.msg = c.msg c.msg;}@overridepublic void undo() {c.msg = c.msg.substring(0, c.msg.length()/2);} } public class deletecommand extends command {content c;string deleted;public deletecommand(content c) {this.c = c;}@overridepublic void doit() {deleted = c.msg.substring(0, 5);c.msg = c.msg.substring(5, c.msg.length());}@overridepublic void undo() {c.msg = deleted c.msg;} } public class insertcommand extends command {content c;string strtoinsert = "http://www.zhangxueliang.com";public insertcommand(content c) {this.c = c;}@overridepublic void doit() {c.msg = c.msg strtoinsert;}@overridepublic void undo() {c.msg = c.msg.substring(0, c.msg.length()-strtoinsert.length());} }

测试

public class main {public static void main(string[] args) {content c = new content();command insertcommand = new insertcommand(c);insertcommand.doit();insertcommand.undo();command copycommand = new copycommand(c);insertcommand.doit();insertcommand.undo();command deletecommand = new deletecommand(c);deletecommand.doit();deletecommand.undo();list commands = new arraylist<>();commands.add(new insertcommand(c));commands.add(new copycommand(c));commands.add(new deletecommand(c));for(command comm : commands) {comm.doit();}system.out.println(c.msg);for(int i= commands.size()-1; i>=0; i--) {commands.get(i).undo();}system.out.println(c.msg);} }

 

总结

以上是凯发k8官方网为你收集整理的command命令设计模式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图