行为型模式

  1. 模板方法模式(Template Method Pattern)
  2. 命令模式(Command Pattern)
  3. 迭代器模式(Iterator Pattern)
  4. 观察者模式(Observer Pattern)
  5. 中介者模式(Mediator Pattern)
  6. 备忘录模式(Memento Pattern)
  7. 解释器模式(Interpreter Pattern)
  8. 状态模式(State Pattern)
  9. 策略模式(Strategy Pattern)
  10. 职责链模式(Chain of Responsibility Pattern)
  11. 访问者模式(Visitor Pattern)

备忘录模式是一种行为设计模式,它允许在不破坏封装的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态。备忘录模式通常涉及三个角色:Originator(发起人)、Memento(备忘录)、Caretaker(负责人)。

以下是状态模式的基本结构和示例:

结构

  1. Originator(发起人)

    • 这个角色负责创建一个包含当前内部状态的备忘录对象,也可以使用备忘录对象恢复其内部状态。
  2. Memento(备忘录)

    • 这个角色是用来存储Originator对象的内部状态。备忘录可以有多个属性,用来记录发起人的状态。
  3. Caretaker(负责人)

    • 负责保存备忘录,但是不能对备忘录的内容进行操作或检查。

示例

备忘录模式在实际应用中非常有用,尤其是在需要实现撤销操作或者保存对象历史状态的场景中,比如文本编辑器的撤销/恢复功能、游戏中的存档功能等。

在软件开发中,备忘录模式也常用于实现事务的回滚操作、数据库的事务管理等。

备忘录模式能够帮助我们在不破坏对象封装性的前提下,实现对象状态的保存和恢复,从而提高系统的灵活性和可维护性。

// State 接口  
interface State {  
    void doAction(Context context);  
}  
  
// ConcreteState 实现  
class OnState implements State {  
    public void doAction(Context context) {  
        System.out.println("Light is turned on");  
        context.setState(this);  
    }  
}  
  
class OffState implements State {  
    public void doAction(Context context) {  
        System.out.println("Light is turned off");  
        context.setState(this);  
    }  
}  
  
// Context 类  
class Context {  
    private State state;  
  
    public Context() {  
        state = null;  
    }  
  
    public void setState(State state) {  
        this.state = state;  
    }  
  
    public State getState() {  
        return state;  
    }  
}  
  
// 使用示例  
public class StatePatternExample {  
    public static void main(String[] args) {  
        Context context = new Context();  
  
        State onState = new OnState();  
        onState.doAction(context);  
  
        State offState = new OffState();  
        offState.doAction(context);  
    }  
}  

在这个示例中,`TextEditor` 充当发起人角色,负责创建备忘录和恢复状态;`TextMemento` 充当备忘录角色,用于保存文本状态;`TextEditorCaretaker` 充当负责人角色,负责保存备忘录。在客户端代码中,我们演示了如何编写文本、保存状态、修改文本、恢复状态,从而实现了一个简单的撤销/恢复功能。

这个示例展示了备忘录模式在文本编辑器中的应用,允许用户保存文本的不同状态,并在需要时进行恢复。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部