行为型模式
- 模板方法模式(Template Method Pattern)
- 命令模式(Command Pattern)
- 迭代器模式(Iterator Pattern)
- 观察者模式(Observer Pattern)
- 中介者模式(Mediator Pattern)
- 备忘录模式(Memento Pattern)
- 解释器模式(Interpreter Pattern)
- 状态模式(State Pattern)
- 策略模式(Strategy Pattern)
- 职责链模式(Chain of Responsibility Pattern)
- 访问者模式(Visitor Pattern)
备忘录模式是一种行为设计模式,它允许在不破坏封装的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态。备忘录模式通常涉及三个角色:Originator(发起人)、Memento(备忘录)、Caretaker(负责人)。
以下是状态模式的基本结构和示例:
结构
-
Originator(发起人):
- 这个角色负责创建一个包含当前内部状态的备忘录对象,也可以使用备忘录对象恢复其内部状态。
-
Memento(备忘录):
- 这个角色是用来存储Originator对象的内部状态。备忘录可以有多个属性,用来记录发起人的状态。
-
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
` 充当负责人角色,负责保存备忘录。在客户端代码中,我们演示了如何编写文本、保存状态、修改文本、恢复状态,从而实现了一个简单的撤销/恢复功能。
这个示例展示了备忘录模式在文本编辑器中的应用,允许用户保存文本的不同状态,并在需要时进行恢复。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 行为模式6.备忘录模式------文本的撤销和保存
发表评论 取消回复