记忆点(Memento)

原创 2003年07月13日 12:27:00

 

很多情况下在我们改变了很多东西的时候。却开始后悔了。也许这就是人类的软弱一面。不管怎么样人生是无法回到原点的。可是软体可以,因为一切运行的程序都是加载在内存中的。所以即使改变了,我们也是可以有办法回到原点的。我想你也许已经猜到我要说什么了吧?是的。Memento 模式。一个很简单的模式。
//原对象
public class Originator {

  public int number;
  public object myObject = null;
         private Memento myMemobject;
  public Originator(){}
        
          public Memento MemObject{
             get{
                   return new Memento(this);
                  }
             set{
                    myMemobject=value;
                    this.number=myMemobject.Number;
                    this.myObject=myMemobject.O;
                  }
             }
  }

//记忆点
[Serializable]
private class Memento : ISerializable {

  private int Number;

  private Object O = null;

  public Memento( Originator o){

    number = o.number;
    O = o.myObject;

  }

}

//调用实例
public class Client
    {
        public static int Main(string[] args)
        {     
   Originator o = new Originator();
                                 Memento  m=o.MemObject;
                                                 //改变值
                                                 o.number=100;
                                                 o.myObject="object";
                                                 //还原
                                                o.MemObject=m;
                                                return 0;
        }
    }

Memento中保存了Originator中的number和object的值. 通过调用Originator中number和object值改变的话,通过调用属性方法可以恢复.这样就满足了面向对象的原则.

设计模式学习笔记——备忘录(Memento)模式

设计模式学习笔记——备忘录(Memento)模式@(设计模式)[设计模式, 备忘录模式, memento]设计模式学习笔记备忘录Memento模式 基本介绍 备忘录案例 类图 实现代码 Memento...
  • q547550831
  • q547550831
  • 2017年04月13日 10:44
  • 605

浅谈JAVA设计模式之——备忘录模式(Memento)

一、概述 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 二、适用性 1.必须保存一个对象在某一个时刻的(部分)状态,这样以后需...
  • l1028386804
  • l1028386804
  • 2015年05月09日 13:02
  • 1360

JAVA设计模式之 备忘录模式【Memento Pattern】

一、概述     在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复至原先保存的状态。它是一种对象行为型模式。 二、适用场景     1、类似于撤...
  • l416112167
  • l416112167
  • 2014年12月23日 23:34
  • 1707

浅谈Java设计模式(十九)备忘录模式(Memento)

前言: 主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部...
  • caihongdao123
  • caihongdao123
  • 2016年07月11日 10:58
  • 6745

Memento记忆模式

//Memento记忆模式。 #include #include using namespace std; class Memento; class Originator { public: ...
  • liuhuiyan_2014
  • liuhuiyan_2014
  • 2015年07月06日 21:28
  • 559

备忘录模式(Memento)

以前有位巨人常常强调备份的重要性。也许,只有经历过当文件找不到的悲哀才体会到吧。 为了做一个淡定的人得意,对于重要的文件,我们要留有副本。...
  • lhc2207221755
  • lhc2207221755
  • 2014年03月22日 17:29
  • 1939

Numpy 记忆点手册

索引和切片1.Numpy 切片返回的都是视图,除非显示的调用.copy()。2.Numpy 通过boolean索引选取的数据,返回的是副本(重新复制一份); 同样的,花式索引也是返回副本。3.Num...
  • sinat_30537123
  • sinat_30537123
  • 2017年12月21日 00:07
  • 37

留下点记忆

从申请CSDN到现在也有4年了,从原先的大学生到现在的程序员,从原先的一窍不通到现在的通了半窍=。= 回顾这段时光,在脑中仿佛像个流光机一样,匆匆流过。。。却没有能够证明真实存在的痕迹留下。。。 ...
  • bywyc
  • bywyc
  • 2016年03月02日 22:44
  • 84

如何有效的记忆和提取记忆

[BetterExplained]如何有效地记忆与学习 BY  刘未鹏  – MARCH 28, 2009POSTED IN: 学习方法, 思维改变生活 你所拥有的知识并不取决...
  • legnmodexin
  • legnmodexin
  • 2014年10月11日 13:13
  • 1832

bootstrap 样式记忆

1.强调内容:“.lead” .text-muted:提示,使用浅灰色(#999).text-primary:主要,使用蓝色(#428bca).text-success:成功,使用浅绿色(#3c7...
  • u010174173
  • u010174173
  • 2016年02月29日 15:35
  • 714
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:记忆点(Memento)
举报原因:
原因补充:

(最多只允许输入30个字)