行为模式6.备忘录模式------文本的撤销和保存

 行为型模式

  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` 充当负责人角色,负责保存备忘录。在客户端代码中,我们演示了如何编写文本、保存状态、修改文本、恢复状态,从而实现了一个简单的撤销/恢复功能。

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值