`
Flyingh
  • 浏览: 18293 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Memento

 
阅读更多

Memento Pattern:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

Memento.java

 

public class Memento {
	private String state;

	public Memento(String state) {
		super();
		this.state = state;
	}

	public String getState() {
		return state;
	}

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

 Originator.java

 

public class Originator {
	private String state;

	public Memento createMemento() {
		return new Memento(state);
	}

	public void restore(Memento memento) {
		state = memento.getState();
	}

	public String getState() {
		return state;
	}

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

 CareTaker.java

 

public class CareTaker {
	private Memento memento;

	public CareTaker(Memento memento) {
		super();
		this.memento = memento;
	}

	public Memento getMemento() {
		return memento;
	}

	public void setMemento(Memento memento) {
		this.memento = memento;
	}
}

 Client.java

 

public class Client {
	public static void main(String[] args) {
		Originator originator = new Originator();
		originator.setState("state1");
		System.out.println(originator.getState());
		System.out.println("创建备忘录:");
		CareTaker careTaker = new CareTaker(originator.createMemento());
		System.out.println("改变状态为state2");
		originator.setState("state2");
		System.out.println("恢复前:");
		System.out.println(originator.getState());
		originator.restore(careTaker.getMemento());
		System.out.println("恢复后:");
		System.out.println(originator.getState());
	}
}

 程序运行结果如下:

 

state1
创建备忘录:
改变状态为state2
恢复前:
state2
恢复后:
state1


分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Quell Memento Game 源码

    在《Quell Memento》中,游戏场景、角色动画以及交互元素等都可能是在Canvas上进行绘制的。理解HTML5 Canvas的绘图API,如`fillRect()`、`strokeRect()`、`beginPath()`、`moveTo()`、`lineTo()`等,是分析游戏源码...

    设计模式之备忘录模式(Memento)

    备忘录模式(Memento Pattern)是设计模式中的一种行为模式,主要目的是在不违反封装原则的情况下,保存一个对象的内部状态,以便在需要时能够恢复到先前的状态。这种模式通常用于实现撤销/重做功能或者在游戏中保存...

    Memento模式

    **Memento模式**,也被称为快照模式,是设计模式中的行为模式之一,它在软件工程中用于保存对象的状态,以便在需要时可以恢复到先前的状态。Memento模式的核心思想是实现对对象状态的无损保存和恢复,而无需暴露对象...

    C++ Memento模式

    **C++ Memento模式** Memento模式是一种行为设计模式,属于设计模式中的“状态保存”类别,它在不破坏封装性的前提下,捕获一个对象的内部状态,并可以在需要时恢复对象到先前的状态。这种模式常用于实现撤销/重做...

    Memento备忘录设计模式实例-绘图程序

    这是运用Memento设计模式,设计的一个简单实例, 你可以通过工具栏选择绘制不同图形,使用备份创建备忘录,然后选择恢复进行绘制图形的恢复。 http://blog.csdn.net/ziyuanxiazai123/article/details/12421265

    C++设计模式代码资源19_Memento.zip

    《C++设计模式:Memento模式深度解析》 在软件工程中,设计模式是一种被广泛认可的解决特定问题的模板,它为复杂性提供了一种结构化的处理方式。Memento模式,又称备忘录模式,是行为设计模式之一,主要用于在不...

    设计模式之备忘录模式(Memento Pattern)

    备忘录模式(Memento Pattern)是软件设计模式中的一种行为模式,它的主要目的是在不破坏对象封装性的前提下,允许对象在特定时刻保存其内部状态,并能够在之后恢复到保存时的状态。这种模式广泛应用于撤销/重做功能...

    13-Memento.rar

    备忘录设计模式(Memento Pattern)是软件工程中的一种行为设计模式,主要用于在不破坏封装性的前提下,捕捉对象的内部状态,并允许之后恢复到该状态。这种模式在许多场景下都有广泛应用,比如撤销/重做功能、游戏...

    C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式

    备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到先前的状态。这种模式在需要撤销/重做功能、...

    OpenERP_Technical_Memento_v0.6.3 PDF 电子书

    ### OpenERP Technical Memento v0.6.3 关键知识点概览 #### 一、OpenERP简介 **OpenERP**是一款现代化的企业管理软件,它基于AGPL协议发布,并且提供了包括客户关系管理(CRM)、人力资源(HR)、销售、会计、...

    备忘录模式(Memento) 注册时用的

    备忘录模式(Memento Pattern)是一种设计模式,它允许对象在不破坏封装性的前提下,捕获并存储其内部状态,以便在需要时恢复到先前的状态。这种模式常用于撤销/重做功能,或者在注册过程中保存用户信息,防止因意外...

    MDB:Memento数据库脚本的Javascript函数

    "MDB:Memento数据库脚本的Javascript函数" 指的是一个使用JavaScript编写的脚本集合,这些脚本与Memento数据库配合使用。Memento数据库是一款轻量级、用户友好的数据库应用,它允许用户创建、管理和共享数据。这里...

    设计模式之备忘录(memento)

    备忘录(Memento)模式是一种行为设计模式,它在不破坏封装性的前提下,捕获一个对象的内部状态,并允许该对象在以后恢复到这个状态。这种模式常用于需要保存和恢复对象状态的情景,例如撤销/重做功能、游戏存档或...

    C++设计模式课件19_Memento_备忘录.pdf

    备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。在C++中实现备忘录模式通常涉及以下几个角色: 1. 发起人(Originator):创建一个备忘录,用以...

    memento_extensions:适用于Chrome和Firefox浏览器的Memento扩展

    适用于Chrome和Firefox浏览器的Memento扩展Chrome下载: : 右键单击页面和链接,以浏览网络的过去。 适用于Chrome和Firefox的Memento可让您在当前网络和过去的网络之间无缝导航。 它将您的浏览器变成Web时间旅行...

    Memento Mori-crx插件

    《Memento Mori-crx插件详解》 在数字化时代的今天,我们的生活被各种应用程序和工具包围,其中浏览器扩展程序作为个性化和效率提升的重要一环,扮演着不可或缺的角色。Memento Mori-crx插件就是这样一个专注于时间...

    memento:一个纯 JavaScript `async`await` 索引的、并发的、事务的、持久的数据库

    Memento 是一个支持原子、隔离事务的数据库,写入预写日志并在系统崩溃时同步以实现持久性,并合并到 b 树中以进行快速检索。 它从内存页面缓存中读取,并在页面达到用户指定的内存限制时从缓存中逐出页面。 ...

Global site tag (gtag.js) - Google Analytics