备忘录模式
2021-12-21 23:05
85 查看
设计模式没有具体的落地代码,写着总感觉是抽象的概念而已
1. 备忘录模式(Memento Pattern)
在不违反封装的情况下保存、获取对象的内部状态,然后在需要的时候可以恢复之前的状态。应用在存档、回退操作(ctrl + z、浏览器回退)
备忘录模式的组成:
- Originator:发起者
- Memento:存储状态的对象
- CareTaker:状态的管理器
2. 流程
流程的背景:模拟游戏内的存档,然后在需要的时候回退
2.1 Originator
public class Originator { // 发起者内部状态(可有多个属性,这里为了简洁只写一个,用来表示角色等级) private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } // 创建内部的状态 public Memento createMemento() { return new Memento(this.state); } // 回退操作 public void setMemento(Memento memento) { this.state = memento.getState(); } }
2.2 Memento
用于保存状态,也就是存档
public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } }
2.3 CareTaker
存档的管理器,内部有多个状态
public class CareTaker { Map<String, Memento> map = new HashMap<>(); public void add(String name, Memento memento) { map.put(name, memento); } public Memento get(String name) { return map.get(name); } }
2.4 测试
public class Test { public static void main(String[] args) { Originator originator = new Originator(); CareTaker careTaker = new CareTaker(); // 角色刚进新手村,等级为 1 originator.setState("1"); careTaker.add("2021-10-1", originator.createMemento()); // 新手村毕业了,等级为 10 originator.setState("10"); careTaker.add("2021-11-1", originator.createMemento()); // 游戏通关了,等级为 99 originator.setState("99"); careTaker.add("2021-12-1", originator.createMemento()); // 通关时的等级,1 System.out.println(originator.getState()); // 回档1,回到新手村,10 originator.setMemento(careTaker.get("2021-10-1")); System.out.println(originator.getState()); // 回档2,回到新手村毕业,99 originator.setMemento(careTaker.get("2021-11-1")); System.out.println(originator.getState()); } }
相关文章推荐
- 通俗易懂设计模式解析——备忘录模式
- JAVA备忘录之设计模式(02):观察者模式
- 二十.备忘录模式
- 行为型模式-备忘录模式
- 设计模式(15)-Memento 备忘录模式
- 行为型模式之备忘录MEMENTO
- 设计模式——备忘录模式
- 软件设计模式--备忘录模式
- 备忘录模式
- 备忘录模式
- Java设计模式—备忘录模式
- 设计模式学习之备忘录模式:象棋中“悔棋”操作
- 设计模式---行为类型---备忘录
- Memento(备忘录)-对象行为型模式
- 设计模式--备忘录模式
- 备忘录模式
- 备忘录模式
- 设计模式知识连载(34)---备忘录模式:
- 设计模式C++描述----17.备忘录(Memento)模式
- JAVA开发的23种设计模式之 --- 备忘录模式