• 设计模式-备忘录模式


            备忘录模式是一种行为设计模式,它允许在不破坏封装的情况下捕获和恢复对象的内部状态。该模式通常用于需要保存和恢复对象状态的情况,例如撤销操作或错误恢复。

            在Java中实现备忘录模式通常需要以下几个关键组件:

            1. Originator(原发器):它是需要保存状态的对象。它可以创建一个备忘录对象来保存当前状态,并可以使用备忘录对象来恢复先前的状态。

            2. Memento(备忘录):它是用于保存原发器状态的对象。备忘录对象可以包含原发器的状态信息,但不能被其他对象访问或修改。

            3. Caretaker(负责人):它是负责保存和恢复备忘录的对象。它可以将备忘录对象存储在某个位置,并在需要时将其返回给原发器。

            下面是一个简单的Java代码示例,演示了如何实现备忘录模式:

    1. // Originator
    2. class Originator {
    3. private String state;
    4. public void setState(String state) {
    5. this.state = state;
    6. }
    7. public String getState() {
    8. return state;
    9. }
    10. public Memento saveStateToMemento() {
    11. return new Memento(state);
    12. }
    13. public void restoreStateFromMemento(Memento memento) {
    14. state = memento.getState();
    15. }
    16. }
    17. // Memento
    18. class Memento {
    19. private String state;
    20. public Memento(String state) {
    21. this.state = state;
    22. }
    23. public String getState() {
    24. return state;
    25. }
    26. }
    27. // Caretaker
    28. class Caretaker {
    29. private Memento memento;
    30. public void saveMemento(Memento memento) {
    31. this.memento = memento;
    32. }
    33. public Memento getMemento() {
    34. return memento;
    35. }
    36. }
    37. // Usage
    38. public class Main {
    39. public static void main(String[] args) {
    40. Originator originator = new Originator();
    41. Caretaker caretaker = new Caretaker();
    42. originator.setState("State 1");
    43. caretaker.saveMemento(originator.saveStateToMemento());
    44. originator.setState("State 2");
    45. caretaker.saveMemento(originator.saveStateToMemento());
    46. originator.setState("State 3");
    47. System.out.println("Current state: " + originator.getState());
    48. originator.restoreStateFromMemento(caretaker.getMemento());
    49. System.out.println("Restored state: " + originator.getState());
    50. }
    51. }

            这个示例中,Originator类表示需要保存状态的对象,Memento类表示备忘录对象,Caretaker类负责保存和恢复备忘录。在Main类中,我们创建了一个Originator对象和一个Caretaker对象,并演示了如何保存和恢复对象的状态。

  • 相关阅读:
    Error running ‘xxx‘: Can‘t get remote credentials for deployment server XXX解决
    fork主仓库后拉取主仓库的最新代码,拉取后更新fork的仓库
    探索 Scikit-learn:Python 机器学习初级篇
    excel中vlookup用法
    解析Collection接口中的常用的被实现子类重写的方法
    运筹说 第75期 | 数学家欧拉也玩跨界
    (十六)Alian 的 Spring Cloud Eureka 集群配置(主机名方式)
    基于遗传算法的微电网经济运行优化matlab程序
    C# File类中的文件读写方法
    如何通过VNC实现公网远程控制macOS设备
  • 原文地址:https://blog.csdn.net/m0_65014849/article/details/133984449