zoukankan      html  css  js  c++  java
  • 极速理解设计模式系列: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  下载。

  • 相关阅读:
    卷一第十、十一、十二、十三、十四、十五章为广域网技术,暂停学习,先学习好局域网
    卷一第九章:WLAN
    卷一第八章:以太网技术
    卷一第七章:局域网概述
    卷一第六章:网络设备基本调试
    卷一第五章:网络设备文件管理
    二层、三层交换机介绍及转发原理
    Codeforces Round #641 (Div. 1)
    机器学习
    机器学习
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2246803.html
Copyright © 2011-2022 走看看