极速理解设计模式系列:19.备忘录模式(Memento Pattern)

简介:

四个角色:原发器(Originator)、备忘录(Memento)、看管者(Caretaker)、客户端(Client) 

        原发器(Originator):需要备忘录来记忆其内部状态的原型。可以将本类状态保存到备忘录,也可以通过备忘录恢复状态。

        备忘录(Memento):保持原发器的内部状态,

        看管者(Caretaker):看管备忘录,不可修改备忘录。

        客户端(Client) :执行原发器保存备忘录可恢复。

实现思路:客户端生产原发器,在原发器保存备忘录到看管者,原发器继续改变其状态,当需要时从看管者那里的备忘录获取已保存的状态以更新自身原发器状态。

类图:

 

应用场景:电话备忘保存。

分析:某人的电话保存到备忘录时,如果需要恢复,通过保管者调用备忘录到原发器类恢复即可。

        下面我们在控制台程序去演示一下如何使用Memento Pattern:

        一、原发器(Originator):

复制代码
    //Originator 原发器
class PhoneOriginator
{
public string Name { get; set; }
public string Number { get; set; }
public PhoneMemento SaveMemento()
{
return new PhoneMemento(Name, Number);
}
public void ResumeMemento(PhoneMemento phoneMemento)
{
this.Name = phoneMemento.Name;
this.Number = phoneMemento.Number;
}
public void Display()
{
Console.WriteLine("------------------");
Console.WriteLine(Name);
Console.WriteLine(Number);
}
}
复制代码

        二、备忘录(Memento):

复制代码
    //Memento 备忘录
class PhoneMemento
{
public string Name { get; set; }
public string Number { get; set; }
public PhoneMemento(string name, string number)
{
this.Name = name;
this.Number = number;
}
}
复制代码

        三、看管者(Caretaker):

    //Caretaker 看管者
class PhoneCaretaker
{
public PhoneMemento Memento { set; get; }
}

        四、 客户端(Client) :

复制代码
    //Client 客户端
class Program
{
static void Main(string[] args)
{
PhoneOriginator po = new PhoneOriginator();
po.Name = "张三";
po.Number = "13880191995";
po.Display();
PhoneCaretaker pcaretaker = new PhoneCaretaker();
pcaretaker.Memento = po.SaveMemento();

po.Name = "李丽";
po.Number = "13669595999";
po.Display();

po.ResumeMemento(pcaretaker.Memento);
po.Display();
Console.ReadLine();

}
}
复制代码

       如需源码请点击 MementoPattern.rar  下载。


本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/11/22/2246803.html,如需转载请自行联系原作者

相关文章
|
7月前
|
设计模式 存储 Java
【设计模式】【行为型模式】备忘录模式(Memento)
一、入门 什么是备忘录模式? 备忘录模式(Memento Pattern)是一种行为设计模式,用于在不破坏封装性的前提下,捕获并外部化一个对象的内部状态,以便在需要时恢复该状态。它通常用于实现撤销操作
222 8
|
9月前
|
设计模式 存储 Java
【再谈设计模式】备忘录模式~对象状态的守护者
备忘录模式属于行为型设计模式。它的主要目的是在不破坏对象封装性的前提下,捕获并外部化一个对象的内部状态,以便之后可以将该对象恢复到这个状态。原发器(Originator):创建一个备忘录,用于记录当前时刻它的内部状态。原发器还可以使用备忘录来恢复其内部状态。备忘录(Memento):存储原发器对象的内部状态。备忘录应该防止原发器以外的其他对象访问其内部状态。负责人(Caretaker):负责保存备忘录,但不能对备忘录的内容进行操作或检查。
324 82
|
9月前
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
存储 设计模式 安全
Java设计模式-备忘录模式(23)
Java设计模式-备忘录模式(23)
152 3
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
设计模式 算法
设计模式的基础问题之备忘录模式在软件开发的问题如何解决
设计模式的基础问题之备忘录模式在软件开发的问题如何解决
102 0
|
设计模式 数据处理
iLogtail设计模式问题之什么是备忘录模式
iLogtail设计模式问题之什么是备忘录模式
|
7月前
|
设计模式 Java 数据库连接
【设计模式】【创建型模式】工厂方法模式(Factory Methods)
一、入门 什么是工厂方法模式? 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪个类。工厂方法模式使类的实例化延迟
203 16
|
7月前
|
设计模式 负载均衡 监控
并发设计模式实战系列(2):领导者/追随者模式
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发设计模式实战系列,第二章领导者/追随者(Leader/Followers)模式,废话不多说直接开始~
210 0

热门文章

最新文章