您的位置:首页 > 新闻 > 会展 > 施工企业资质_徐州建设工程交易中心_如何进行网站性能优化?_二级域名网址查询

施工企业资质_徐州建设工程交易中心_如何进行网站性能优化?_二级域名网址查询

2025/1/4 18:25:14 来源:https://blog.csdn.net/qq_44407005/article/details/144132246  浏览:    关键词:施工企业资质_徐州建设工程交易中心_如何进行网站性能优化?_二级域名网址查询
施工企业资质_徐州建设工程交易中心_如何进行网站性能优化?_二级域名网址查询

备忘录模式(Memento Pattern)是一种行为型设计模式,旨在在不破坏封装性的前提下捕获对象的内部状态,并在需要时恢复到之前的状态。它主要用于保存和恢复对象的状态,常用于实现撤销操作或版本管理。

模式结构

备忘录模式包含以下三个主要角色:

  • Originator(发起人)
    定义一个对象,它的状态需要被保存和恢复。
    提供创建备忘录(保存状态)和恢复备忘录(还原状态)的方法。
  • Memento(备忘录)
    存储发起人的内部状态。
    通常是一个不透明对象,只有发起人能够访问其内容。
  • Caretaker(负责人)
    负责保存备忘录,但不能修改或访问备忘录的内容。

代码示例

// 备忘录类
class Memento {private String state;public Memento(String state) {this.state = state;}public String getState() {return state;}
}// 发起人类
class Originator {private String state;public void setState(String state) {this.state = state;System.out.println("State set to: " + state);}public String getState() {return state;}public Memento createMemento() {return new Memento(state);}public void setMemento(Memento memento) {state = memento.getState();System.out.println("State restored to: " + state);}
}// 负责人类
class Caretaker {private List<Memento> mementoList = new ArrayList<>();public void addMemento(Memento memento) {mementoList.add(memento);}public Memento getMemento(int index) {return mementoList.get(index);}
}// 测试代码
public class MementoPatternDemo {public static void main(String[] args) {Originator originator = new Originator();Caretaker caretaker = new Caretaker();originator.setState("State1");caretaker.addMemento(originator.createMemento());originator.setState("State2");caretaker.addMemento(originator.createMemento());originator.setState("State3");System.out.println("Current state: " + originator.getState());// 恢复状态originator.setMemento(caretaker.getMemento(0));System.out.println("Restored state: " + originator.getState());}
}

适用场景

  • 需要保存和恢复对象的状态。
  • 实现撤销操作功能。
  • 需要保存对象的历史版本。

优缺点

  • 优点
    提供了对象状态的快照功能。
    保持了对象的封装性。
  • 缺点
    如果需要保存的状态非常复杂,会消耗较多内存。
    负责人类需要管理多个备忘录,可能引入管理复杂性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com