首页 > 设计模式:备忘录模式??

设计模式:备忘录模式??

定  义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

           这样以后就可以将该对象恢复到原先保存的状态。

结构图:

Originator(发起人):负责创建一个备忘录(Memento),用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。

Memnto(备忘录):负责存储Originator对象的内部状态,并可防止Originator以外的对象访问备忘录Memento。

Caretaker(管理者):负责保存备忘录(Memento),不能对备忘录的内容进行操作或检查。

class Originator{public string State { get; set; }public Memento CreateMemento(){return new Memento(this.State);}public void SetMemento(Memento m){this.State = m.State;}public void Show(){Console.WriteLine("State:" + this.State);}}class Memento{private string state;public Memento(string state){this.state = state;}public string State{get { return state; }}}class CareToker{public Memento memento { get; set; }}
View Code

客户端调用:

            Originator originator = new Originator();originator.State = "ON";originator.Show();CareToker careToker = new CareToker();//创建备忘录保存内部状态careToker.memento = originator.CreateMemento(); originator.State = "OFF";originator.Show();//使用备忘录恢复内部状态
            originator.SetMemento(careToker.memento);originator.Show();   
View Code

结果:

转载于:https://www.cnblogs.com/qianxingdewoniu/p/3566703.html

更多相关:

  • 关于如何在有噪声的数据中进行状态估计的问题的理解,状态估计的问题是指在运动和观测方程中,通常假设两个噪声ωiomega_i和υk,jupsilon_{k,j}满足零均值的高斯分布, xk=f(xk−1,uk)+ωkx_k=f(x_{k-1},u_k)+omega_k其中ωk→N(0,Rk)omega_k ightarro...

  • 强化学习(英语:Reinforcement learning,简称RL)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。这个方法具有普适性,因此在其他许多领域都有研究,例如博弈...

  • 文章目录PG 的状态机和peering过程1. PG 状态机变化的时机2. pg的状态演化过程3. pg状态变化实例讲解3.1 pg状态的管理结构3.2 数据的pg状态变化过程3.2.1 NULL -> initial3.2.2 initial -> reset -> Started3.2.3 Started(start) ->St...

  • 什么是状态模式? 定义:将事物内部的每个状态分别封装成类,内部状态改变会产生不同行为。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用:代码中包含大量与对象状态有关的条件语句。 如何解决:将各种具体的状态类抽象出来。 应用实例: 1、打篮球的时候运动员可以有正常状态、不正常状态和超...

  • 别小看这个功能, 感觉在写一些技术 Blog 的情况下还是挺有用的.   打开QQ拼音: 输入法设置->基本设置->初始状态->中文状态下使用英文标点.  转载于:https://www.cnblogs.com/qrlozte/p/4904087.html...