.net设计模式实例之备忘录模式(Memento Pattern)

一、备忘录模式简介(Brief Introduction)

备忘录模式(Memento Pattern),在不破坏封装的前提下,捕获一个对象的内部状态, 并在该对象之外保存这个状态。这样以后就可以就该对象恢复到原先保存的状态。

二、解决的问题(What To Solve)

当系统功能比较复杂,而且需要记录历史属性以便当需要时做恢复动作。Originator可以 根据保存的Memento信息还原到前一状态。

三、备忘录模式分析(Analysis)1、备忘录模式结构

Originator类:发起人。

CreateMemento方法,负责创建一个备忘录,用于记录当前时刻它的内部状态。

SetMemento方法,使用备忘录回复状态。

Show方法,展示状态。

Originator类:可以决定备忘录Memento存储Originator的哪些状态。

Memento类:备忘录,负责存储Originator的内部状态,并可防止Originator以外的其他 对象访问备忘录Memento

Caretaker类:负责保存备忘录Memento,不能对备忘录的内容进行操纵和检查。

时间: 2024-12-28 11:30:18

.net设计模式实例之备忘录模式(Memento Pattern)的相关文章

乐在其中设计模式(C#) - 备忘录模式(Memento Pattern)

原文:乐在其中设计模式(C#) - 备忘录模式(Memento Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 备忘录模式(Memento Pattern) 作者:webabcd 介绍 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到保存的状态. 示例 有一个Message实体类,某个对象对它的操作有Insert()方法,只有在插入时间符合要求的情况下才能插入成功,因此要求可以保存和恢复Message对象的状态,插入失败

学习php设计模式 php实现备忘录模式(Memento)_php技巧

一.意图 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样可以在以后把该对象的状态恢复到之前保存的状态. 二.备忘录模式结构图 三.备忘录模式中主要角色1.备忘录(Memento)角色: 存储发起人(Originator)对象的内部状态,而发起人根据需要决定备忘录存储发起人的哪些内部状态. 备忘录可以保护其内容不被发起人(Originator)对象之外的任何对象所读取.2.发起人(Originator)角色:创建一个含有当前的内部状态的备忘录对象 使用备忘录对象存

.Net设计模式实例之原型模式( Prototype Pattern)

一.原型模式简介(Brief Introduction) 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype. 浅复制与深复制区别: 浅复制,被复制的所有变量都还有与原来对象相同的值,而所有的对其他对象的

.net设计模式实例之状态模式(State Pattern)

一.状态模式简介(Brief Introduction) 状态模式(State Pattern),当一个对象的内在状态改变时允许改变其行为,这个对象 看起来像是改变了其类. 二.解决的问题(What To Solve) 状态模式主要解决的是当控制一个对象状态装换的条件表达式过于复杂时的情况.把状态 的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简单化. 当一个对象行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可 以考虑使用状态模式了. 三.状态模式分析(Ana

.net设计模式实例之桥接模式( Bridge Pattern)

一.桥接模式简介(Brief Introduction) 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化. Decouple an abstraction from its implementation so that the two can vary independently.. 什么是聚合/组合: 聚合(Aggregation),当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系.聚合是关联关系的一种,是较

.Net设计模式实例之命令模式(Command Pattern)

一.命令模式简介(Brief Introduction) 命令模式(Command Pattern)将请求封装为一个对象,从而使你用不同的请求对客户进 行参数化,对请求排队或纪录请求日志,以及支持可撤销的操作. Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoabl

【设计模式】—— 备忘录模式Memento

模式意图 这个模式主要是想通过一个对象来记录对象的某种状态,这样有利于在其他需要的场合进行恢复. 该模式还有跟多可以扩展的地方,比如可以记录多个时间的状态,每个角色都有可以扩展的空间,完全看业务场景而定. 应用场景 1 保存对象某一时刻的状态 2 避免直接暴露接口,破坏封装性 模式结构 Originator 是备忘录的发起者,记录状态的对象 class Originator{ private String state; public Memento ceateMemento() { return

乐在其中设计模式(C#) - 享元模式(Flyweight Pattern)

原文:乐在其中设计模式(C#) - 享元模式(Flyweight Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 享元模式(Flyweight Pattern) 作者:webabcd 介绍 运用共享技术有效地支持大量细粒度的对象. 示例 有一个Message实体类,某些对象对它的操作有Insert()和Get()方法,现在要运用共享技术支持这些对象. MessageModel using System;using System.Collections.Generic;usi

乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)

原文:乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:webabcd 介绍 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 示例 有一个Message实体类,某个对象对它的操作有Send()和Insert()方法,现在用一个中介对象来封装这一系列的对象交互. MessageModel