目 录CONTENT

文章目录

Java设计模式之备忘录模式

在等晚風吹
2023-12-29 / 0 评论 / 0 点赞 / 24 阅读 / 0 字 / 正在检测是否收录...

Java设计模式之备忘录模式

欢迎来到我的博客!今天,我们将深入研究Java设计模式中备忘录模式,这是一种用于在不暴露对象内部状态的情况下保存和恢复对象状态的行为型设计模式。备忘录模式在实际应用中广泛用于需要记录对象状态历史或提供撤销操作的场景。本文将详细介绍备忘录模式的概念、使用方法以及适用场景。

1 备忘录模式是什么?

备忘录模式是一种行为型设计模式,它允许对象在不暴露其内部状态的情况下保存和恢复其状态。备忘录模式主要包括三个核心角色:发起者(Originator)、备忘录(Memento)和管理者(Caretaker)。

2 使用方法

备忘录模式主要包括以下几个核心角色:发起者接口(Originator)、具体发起者(ConcreteOriginator)、备忘录接口(Memento)、具体备忘录(ConcreteMemento)、管理者(Caretaker)。

2.1 发起者接口(Originator)

public interface Originator {
    Memento createMemento();
    void restoreMemento(Memento memento);
    String getState();
    void setState(String state);
}

2.2 具体发起者(ConcreteOriginator)

public class ConcreteOriginator implements Originator {
    private String state;

    @Override
    public Memento createMemento() {
        return new ConcreteMemento(state);
    }

    @Override
    public void restoreMemento(Memento memento) {
        this.state = ((ConcreteMemento) memento).getState();
    }

    @Override
    public String getState() {
        return state;
    }

    @Override
    public void setState(String state) {
        this.state = state;
    }
}

2.3 备忘录接口(Memento)

public interface Memento {
}

2.4 具体备忘录(ConcreteMemento)

public class ConcreteMemento implements Memento {
    private String state;

    public ConcreteMemento(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }
}

2.5 管理者(Caretaker)

import java.util.ArrayList;
import java.util.List;

public class Caretaker {
    private List<Memento> mementos = new ArrayList<>();

    public void addMemento(Memento memento) {
        mementos.add(memento);
    }

    public Memento getMemento(int index) {
        return mementos.get(index);
    }
}

2.6 客户端(Client)

public class Client {
    public static void main(String[] args) {
        Caretaker caretaker = new Caretaker();

        Originator originator = new ConcreteOriginator();
        originator.setState("State 1");
        caretaker.addMemento(originator.createMemento());

        originator.setState("State 2");
        caretaker.addMemento(originator.createMemento());

        originator.restoreMemento(caretaker.getMemento(0));
        System.out.println("Current State: " + originator.getState());
    }
}

3 适用场景

备忘录模式适用于以下场景:

  • 需要保存和恢复对象状态,实现撤销操作。
  • 需要提供对象状态的历史记录。
  • 对象状态的保存和恢复需要对客户端透明。

4 总结

备忘录模式是一种实现对象状态保存和恢复的优雅方式,通过将对象状态封装到备忘录对象中,实现了对对象状态的有效管理。希望通过本文的介绍,你对备忘录模式有了更深刻的理解。如果你对其他设计模式也感兴趣,敬请继续关注我的博客,我将为你带来更多精彩的内容!感谢阅读!

0

评论区