Java设计模式 _行为型模式_备忘录模式

// 1、定义数据格式 public interface Memento1 { String getData(); void setData(String data); } // 2、定义实现类,即备忘录对象 public class MementoBook implements Memento1 { String data; // 备忘录记录data数据 public MementoBook(String data) { this.data = data; } @Override public String getData() { return data; } @Override public void setData(String data) { this.data = data; } } // 3、定义操作对象,记录数据,记录备忘录,封装回溯方法 import lombok.Data; import java.util.ArrayList; import java.util.List; @Data public class Originator { String data; // 操作数据 List<MementoBook> mementoBooks; // 备忘录集合 public Originator() { mementoBooks = new ArrayList<>(); } public void saveData(String data) { // 保存操作数据 this.data = data; mementoBooks.add(new MementoBook(data)); } public void revoke() { // 返回上一次操作的数据 this.data = mementoBooks.get(mementoBooks.size() - 2).getData(); mementoBooks = mementoBooks.subList(0, mementoBooks.size() - 1); } public void revokeHistory(int index) { // 返回到历史指定的数据 this.data = mementoBooks.get(index - 1).getData(); mementoBooks = mementoBooks.subList(0, index); } } // 4、测试 public static void main(String[] args) { Originator originator = new Originator(); originator.saveData("1"); originator.saveData("2"); originator.saveData("3"); originator.saveData("4"); originator.saveData("5"); originator.saveData("6"); originator.saveData("7"); originator.saveData("8"); originator.saveData("9"); originator.saveData("10"); System.out.println("当前值:"+originator.getData()); originator.revoke(); System.out.println("撤回一步的值:"+originator.getData()); originator.revoke(); System.out.println("撤回一步的值:"+originator.getData()); originator.revokeHistory(5); System.out.println("测绘到第5步当时的值:"+originator.getData()); }
上一篇:springboot整合chatgpt,并且让其可以记录上下文


下一篇:【全开源】沃德商协会管理系统源码(FastAdmin+ThinkPHP+Uniapp)