频道栏目
首页 > 资讯 > ASP.Net > 正文

步步为营 .NET 设计模式学习笔记 二十二、Memento(备望录模式) 概述

11-05-04        来源:[db:作者]  
收藏   我要投稿

概述

在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性。

意图

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

结构图

image

角色说明:

Memento(备忘录):保存Originator对象的内部状态(主动权在Originator),提供宽接口给Originator,提供窄接口给CareTaker。
Originator(原发器):控制那些内部状态要保存,防止外界对象访问Memento,自己可以访问Memento,尤其是先前状态。
CareTaker:负责保存Memento,但不能浏览Memento(从而是窄接口)。
State:状态类,用来模拟内部状态,亦可以是一个string,这里设计成类更有一般意义。

 

生活中的例子

在使用IE浏览器时,有一个按扭返回上一步操作,返回上一个打开的页面,其实原理和备望录模式一样.

 

用例示例图

实现一个用户信息保存的功能,用例图如下:

image

 

代码设计

先创建UserInfo.cs:

01 public class UserInfo
02 {
03     private string _Name;
04     private string _Address;
05  
06     public string Name
07     {
08         get { return _Name; }
09         set { _Name = value; }
10     }
11  
12     public string Address
13     {
14         get { return _Address; }
15         set { _Address = value; }
16     }
17  
相关TAG标签
上一篇:漫谈算法(三)NP问题
下一篇:驳“面向对象的基本特性多态”
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站