软件设计-备忘录模式
2021/12/13 23:16:53
本文主要是介绍软件设计-备忘录模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
多次撤销
改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数据结构实现)。
类图
代码
Java
package rjsj.no20; public class Client { public static void main(String[] args) { User user = new User(); Caretaker caretaker = new Caretaker(); user.setId("20193288"); user.setPassword("123456"); caretaker.setMemo(user.saveState()); System.out.println("״̬һ"); user.show(); System.out.println("************************************************************"); user.setId("20193288"); user.setPassword("qwerasdfzxcv"); caretaker.setMemo(user.saveState()); System.out.println("״̬¶þ"); user.show(); System.out.println("************************************************************"); user.setId("20183288"); user.setPassword("66666666"); caretaker.setMemo(user.saveState()); System.out.println("״̬Ƚ"); user.show(); System.out.println("************************************************************"); System.out.println("ְ²½³·Ϻ²ٗ÷£º"); System.out.println("»ָ´µ½״̬¶þ"); user.restoreState(caretaker.getMemo()); user.show(); System.out.println("************************************************************"); System.out.println("»ָ´µ½״̬һ"); user.restoreState(caretaker.getMemo()); user.show(); } }
package rjsj.no20; public class Memo { private String id; private String password; public Memo(String id, String password) { this.id = id; this.password = password; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
package rjsj.no20; public class User { private String id; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Memo saveState(){ return new Memo(id,password); } public void restoreState(Memo m){ this.id = m.getId(); this.password = m.getPassword(); } public void show(){ System.out.println("id:" + this.id); System.out.println("password:" + this.password); } }
package rjsj.no20; import java.util.ArrayList; import java.util.List; public class Caretaker { private List<Memo> list = new ArrayList<>(); public void setMemo(Memo m){ list.add(m); } public Memo getMemo(){ Memo m = list.get( list.size() - 2 ); list.remove( list.size() - 2 ); return m; } }
C++
#include<iostream> #include <list> using namespace std; class Memento { private: string account; string password; public: string getAccount() { return account; } void setAccount(string account) { this->account = account; } string getPassword() { return password; } void setPassword(string password) { this->password = password; } Memento(string account, string password) { this->account = account; this->password = password; } }; class UserInfoDTO { private: string account; string password; public: string getAccount() { return account; } void setAccount(string account) { this->account = account; } string getPassword() { return password; } void setPassword(string password) { this->password = password; } Memento* saveMemento() { return new Memento(account,password); } void restoreMemento(Memento *memento) { this->account=memento->getAccount(); this->password=memento->getPassword(); } void show() { cout<<"Account:"<<this->account<<endl; cout<<"Password:"<<this->password<<endl; } }; class Caretaker { private: list<Memento*> ll; public: Memento* getMemento() { ll.pop_front(); Memento* mm=ll.front(); return mm; } void setMemento(Memento *memento) { ll.push_front(memento); } }; int main(){ UserInfoDTO *user=new UserInfoDTO(); Caretaker *c=new Caretaker(); user->setAccount("张三"); user->setPassword("123456"); cout<<"状态一:"<<endl; user->show(); c->setMemento(user->saveMemento()); cout<<"-----------------------------"<<endl; user->setAccount("李四"); user->setPassword("lisi666"); cout<<"状态二:"<<endl; user->show(); c->setMemento(user->saveMemento()); cout<<"-----------------------------"<<endl; user->setAccount("王五"); user->setPassword("88888888"); cout<<"状态三:"<<endl; user->show(); c->setMemento(user->saveMemento()); cout<<"-----------------------------"<<endl; user->restoreMemento(c->getMemento()); cout<<"回到状态二:"<<endl; user->show(); cout<<"-----------------------------"<<endl; user->restoreMemento(c->getMemento()); cout<<"回到状态一:"<<endl; user->show(); cout<<"-----------------------------"<<endl; }
运行截图
这篇关于软件设计-备忘录模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)