自考感悟,话谈备忘录模式

引言:

    2014年4月20号上午11:30,正式结束了自己的自学考试!考完之后瞬间感觉放松了开来!全身无力则是自己20号下午的唯一感受。放松了半天,今天回归正轨!又回到了和生活息息相关的设计模式上来!今天就用备忘录模式来记录一下自己这次的自考感受吧!

    考试有喜有忧,对于数据库来讲,因为考试了一遍,这次又一次回到考场上,产生出了不一样的快感吧!最起码态度有了转变,解题方式上也有了提高;昨天上午考的管理经济学也许是自己这次感觉最顺利的一科!也许是有计算题的原因吧!相比之下,信息资源管理就显得令自己充满了无奈!

    在考场上,也许每一个人都会遇到这种问题,这个问题当初自己看的非常认真,但是当考场上真的出现了自己所谓的重点的时候,又会不自觉的责备一下自己,为何当初自己不再认真点呢?这样自己就能够拿满分了!今天就用备忘录模式来帮助一下自己,记录一下自己的以前的记忆吧!即所谓的“懊悔药机制”

备忘录模式:

结构图:


Originator:负责创建一个Memento,用以记录当前时刻它的内部状态,并可使用备忘录回复内部状态。
Memento:负责存储Originator对象的内部状态,并可防止Originator以外的其它对象訪问Memento。
Caretaker:负责保存好Memento,不能对备忘录的内容进行操作或检查。

介绍:

备忘录模式,又叫快照模式(Snapshot Pattern)或Token模式,是行为模式的一种。

长处:

1)给用户提供了一种能够恢复状态的机制。能够是用户能够比較方便地回到某个历史的状态。
2)实现了信息的封装。使得用户不须要关心状态的保存细节。

缺点:

消耗资源。假设类的成员变量过多,势必会占用比較大的资源,并且每一次保存都会消耗一定的内存。

使用场景:

    Memento模式比較适用于功能比較复杂的,但须要维护或记录属性历史的类,或者须要保存的属性仅仅是众多属性中的一小部分时,Originator能够依据保存的Memento信息还原到前一状态。
总结点:
    1)须要保存一个对象在某一个时刻的状态或部分状态;2)假设用一个接口来让其他对象得到这些状态,将会暴漏对象的实现,通过负责人能够间接訪问其内部状态。

自考记忆举例:

备注:

       考试的时候自己每次遇到一个题目,总会从大脑中搜索相关的知识,一下的过程则是简单的描写叙述了一下知识存储于大脑以及从大脑搜索的过程!

client主要代码:

 static void Main(string[] args){Memory memory = new Memory();memory.Economics = "这个知识点属于管理经济学的内容模块";memory.ShowEconomicsName();Brain B = new Brain();B.Memento = memory.Savekind();   //记忆存储memory.Economics = "这个知识点已经归纳到大脑中内容模块";memory.ShowEconomicsName();//从大脑中查找memory.Seek(B.Memento);memory.ShowEconomicsName();}

Originator类:

class Memory{private string economics;public string Economics{get { return economics; }set { economics= value; }}//经济学管理存储public MemoryMemento Savekind(){Console.WriteLine("内容模块已在大脑中存储");return (new MemoryMemento(economics));}//查找public void Seek(MemoryMemento MM){economics = MM.Economics;Console.WriteLine("已从大脑中搜索到经济管理学内容模块");}public void ShowEconomicsName(){Console.WriteLine(economics);}

Memento类:

class MemoryMemento{private string economics;public MemoryMemento (string economics)  //在记忆时对内容要总结{this.economics = economics;}public string Economics{get { return economics; }}}

Caretaker类:

 class  Brain{private MemoryMemento memento;public MemoryMemento Memento{get { return memento; }set { memento = value; }}}

最后执行结果:


    第二次自考就这样结束了!当中经历了非常好的GTD,同一时候也由于上次不理想的原因小小烦躁了一段时间,可是最后想想备忘录这个大功能,相信在GTD的非常好辅助下,自己也全然能够做到!为自己的第三次自考加油!



 


转载于:https://www.cnblogs.com/mengfanrong/p/3745174.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小白教你用Java生成验证码

验证码生成效果一,生成验证码二,页面收到验证码三,验证验证码是否填写正确效果 点击验证码可切换 给出提示 一,生成验证码 package servlet;import java.io.IOException;import javax.servlet.ServletException; import jav…

modbus rtu 协议转DLT645-2007和DLT645-1997电表协议转换器定制,

现场会碰到现场数据为Modbus协议,但是后台系统为DLT645协议系统,本模块支持将工业ModbusRtu协议转换为电表国标协议DLT645协议,支持1997和2007俩种标准,只需要进行简单的配置,就可以实现Modbus 协议转DLT645协议&#…

关于pycharm deployment消失的问题

settings --> Appearance --> Menus and Toolbars 点开Tools文件夹,选中Tools中的一个子文件夹(Deployment就放在了这个工具后面了) 点击上面的号,选择choose action to add 搜索deployment,找到Deployment文…

顺序队列,循环队列,链队列

队列先看队列接口和结点类1. 顺序队列2. 循环队列3. 链队列先看队列接口和结点类 package com.lovely.queue;/** * 2020年4月26日下午2:42:44* * author echo lovely**/ public interface IQueue {public void clear(); // 将队列置空public boolean isEmpty(); // 判断队列是…

Fashion-MNIST数据集离线加载办法

从MXNet上下载了数据集,从其它地方下载的数据集会出现校验不通过而重复下载,使用书中代码就是在Mxnet上下载数据集;数据完全下载后,找到数据后,新建一个目录,譬如叫做./data/fashion-mnist,把数…

优先级队列

优先级队列优先级结点类优先级队列接口优先级队列具体实现测试优先级结点类 package com.lovely.queue;public class PriorityNode {/*** author echo lovely* 2020年6月7日下午8:52:08* 优先级结点类*/public Object data; // 结点数据域public int priority; // 结点的优先级…

残差网络(ResNet)

普通块 残差块 现在一个大概的理解是,增加x这条“短路”后,肯定优于(恒等映射),可以考虑两种情况:可以拟合出远远高于(恒等映射),或者根本拟合不出高于(恒等…

AI绘画训练一个扩散模型-上集

介绍 AI绘画,其中最常见方案基于扩散模型,Stable Diffusion 在此基础上,增加了 VAE 模块和 CLIP 模块,本文搞了一个测试Demo,分为上下两集,第一集是denoising_diffusion_pytorch ,第二集是diff…

顺序串的实现

顺序串接口查找增加...测试接口 package com.lovely.string;/*** * author echo lovely* 2020年6月9日下午6:44:31** 串的接口描述*/ public interface IString {public void clear();public boolean isEmpty(); public int length(); public char charAt(int i) throws Excep…

WPF多线程UI更新——两种方法

WPF多线程UI更新——两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象。&…

jdbc万能dao

jdbc万能dao一,为何封装万能dao二,代码实现一,为何封装万能dao 不用框架,纯jdbc连接数据库,会用到dao包,如果每个表都要写增删改查,一个dao至少四个方法,dao会有大量代码重复&#…

5月27日

其实前天我想说我有点理解我爸了 当年到福建的时候跟现在差不多吧 气候 方言 吃的 住的 跟自己原来习惯的完全是不同 恐怕人人都会问这到底是为了什么 能为了什么呢? 路走到这儿了 有的是自己选的 有的不是 但已经走到这里了 当时晚上到福建家里的 第二天醒来看 屋子…

二叉树的递归遍历

二叉树遍历一,什么是二叉树二,递归实现2.1 结点类描述2.2 三种递归2.2 测试一,什么是二叉树 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作"左子树"(left subtree)和&…

概率论的公理结构

样本点 一个随机事件出现的可能的结果叫做样本点。 类比平面几何,线、面、体也是由点组成的集合,研究的是点线面关系及性质,同样样本点也是组成事件(集合)的材料,是集合的基本元素,把这些样本…

python词云的简单使用

词云的生成所需库代码实现wordclod参数说明具体实现效果展示所需库 wordcloud, jieba, imageiowordcloud 词云库,用来统计文本文档里面出现的高频词汇,或者句子,以图片可视化的方式显示出来jieba库,分割中文的库,把较…

(一)Neo4j在Centos7虚拟机上的安装

1、什么是图数据库? 图数据库是基于数学里图论的思想和算法而实现的高效处理复杂关系网络的新型数据库系统。图形数据库善于高效处理大量的、复杂的、互连的、多变的数据。其计算效率远远高于传统的关系型数据库。图形数据库在社交网络、实时推荐、征信系统、人工智…

代码演示 .NET 4.5 自带的 ReadonlyCollection 的使用

代码如下: 1. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConfigurationLibrary {public class ConfigElement{public int Id { get; set; }public string Value { get; set…

(二)Cypher语言常用方法举例

1、概述 “Cypher”是一个描述性的类Sql的图操作语言。相当于关系数据库的Sql,可见其重要性!其语法针对图的特点而设计,非常方便和灵活。没有Join,是一大特点!学好Cypher是学好Neo4j的关键,也是核心所在&a…

Java高新技术 枚举

Java高新技术 枚举 知识概要: (1)为什么要有枚举 (2)枚举的示例 (3)枚举的应用 (4)枚举的高级应用 (1)为什么需要枚举 问题:要定义星期几或性别的变量,该怎么定义? 假设用1-7分别表示星期一到星期日&am…