备忘录模式
一、作用:
在不破坏原有封装性(属性什么的,不要暴漏给客户端)的前提下,捕获一个对象的内容状态,并保持这个对象的状态,同样可以将对象恢复到之前的状态
二、类图:
三、实现
(1)Role类,角色类,可以保存状态,恢复状态
public class Role { private String status; public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public Memory saveMemory() { return new Memory(status); } public void recoveryMemory(Memory memory) { this.status = memory.getStatus(); } }
(2)Memory类,实际状态保持的类,用于封装,隐藏细节
public class Memory { private String status; public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public Memory(String status) { this.status = status; } }
(3)MemoryCare类,用于set和get保存的状态
public class MemoryCare { private Memory memory; public Memory getMemory() { return memory; } public void setMemory(Memory memory) { this.memory = memory; } }
(4)Client,客户类
public class Client { public static void main(String[] args) { MemoryCare mc = new MemoryCare(); Role role = new Role(); role.setStatus("fighting"); System.out.println(role.getStatus()); mc.setMemory(role.saveMemory()); role.setStatus("game over"); System.out.println(role.getStatus()); role.recoveryMemory(mc.getMemory()); System.out.println(role.getStatus()); } }
Bonus:适配器模式:再增加一个类,使用适配器模式,将不适用与现在接口的方法改写成可以适用的方法