备忘录

python-备忘录模式

纵然是瞬间 提交于 2020-01-22 18:33:42
源码地址: https://github.com/weilanhanf/PythonDesignPatterns 说明: 一个成熟的软件应当允许用户取消不确定的操作或者从错误的状态中恢复过来。复制,粘体,撤回,和剪切是常见的应用。因此程序必须提供必要的检查点和取消机制。在适当的事迹程序需要检查对象的状态,如有必要将状态信息保存到某处,以使得对象有机会恢复到它们之前的状态。但是面向对象的封装性又使得对象外部无法访问对象内部的状态,因此就可以使用备忘录模式。 备忘录模式定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原来保存的状态。在备忘录模式中,如果要保存的状态多,可以创造一个备忘录管理者角色来管理备忘录。 备忘录结构: 原发器,备忘录,负责人。 一个备忘录就是一个对象,它存储另一个对象某个瞬间的内部状态,被存储的对象成为原发器。所谓备忘录就是原发器在某个瞬间的快照。同一个原发器可以有多个快照。 实例: 打过游戏的朋友一定知道,大多数游戏都有保存进度的功能,如果一局游戏下来,忘保存了进度,那么下次只能从上次进度点开始重新打了。一般情况下,保存进度是要存在可持久化存储器上,本例中先以保存在内存中来模拟实现该场景的情形。 import random #以模拟一个战斗角色为例。首先,创建游戏角色 class

备忘录模式

孤者浪人 提交于 2020-01-22 18:32:52
1.备忘录模式是什么 1.百度百科 备忘录模式 (Memento Pattern):又叫做快照模式(Snapshot Pattern)或Token模式。在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 2.维基百科 The memento pattern is a software design pattern that provides the ability to restore an object to its previous state (undo via rollback). The memento pattern is implemented with three objects: the originator, a caretaker and a memento. The originator is some object that has an internal state. The caretaker is going to do something to the originator, but wants to be able to undo the change. The caretaker first asks the originator for a memento object.

设计模式学习笔记(二十二:备忘录模式)

大憨熊 提交于 2020-01-22 18:32:34
1.1 概述 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。这就是备忘录模式的定义。 对象的状态依赖于它的变量的取值情况,对象在程序运行期间的各个时刻可能具有不同的状态。在某些应用中,程序可能需要使用一种合理的方式来保存对象在某一时刻的状态,以便在需要时,对象能恢复到原先保存的状态。在备忘录模式中,称需要保存状态的对象为 “原发者”,称负责保存原发者状态的对象为“备忘录”,称负责管理备忘录的对象为“负责人”。备忘录模式要求原发者可以访问备忘录中的细节,即可以访问备忘录中的数据,以便恢复原发者的状态,而负责人只能保存和得到备忘录,但访问备忘录中的数据受到一定的限制。备忘录模式使原发者可以将自己的状态暴露给备忘录,但其他对象想要获得备忘录中的数据会受到一定的限制,这就保证了原发者暴露内部数据的同时,又保证了数据的封装性。另外,经过精心设计的备忘录在保存原发者状态时,可能只需要保存原发者的部分变量即可,也就是备忘录通过保存原发者状态中最本质的数据,就能使原发者根据此备忘录中的数据恢复原始状态。 例如,对于一个游戏软件,该游戏可能需要经过许多关卡才能最后成功,那么该游戏应当提供保存 “游戏关卡”的功能,使游戏玩者在成功完成游戏的某一个关卡之后,保存当前的游戏状态,当玩到下一个关卡失败时

JAVA备忘录(二):IO流(api使用)

断了今生、忘了曾经 提交于 2020-01-21 03:23:25
概述:JAVA IO流可以按两种方法进行分类: 按流向分类可分为: 输入流(InputStream,Reader) 输出流 (OutputStream,Writer) 按操作类型进行分类: 字节流 (InputStream,OutputStream):字节流可以操作任何数据,因为计算机中的数据都是以字节的形式存储的。 字符流 (Redaer,Writer):字符流只能操作字符数据,是为了防止乱码。 一.使用FileIntputStream和FileOutputStream对文件进行读写操作。 FileIntputStream : @Test public void testFileInputStream ( ) { FileInputStream fileOutputStream = null ; try { fileOutputStream = new FileInputStream ( "D:/abc.txt" ) ; int temp ; while ( ( temp = fileOutputStream . read ( ) ) != - 1 ) System . out . print ( ( char ) temp ) ; } catch ( FileNotFoundException e ) { e . printStackTrace ( ) ; } catch (

JAVA备忘录(三):数据库面试题

放肆的年华 提交于 2020-01-20 19:02:51
一.基本概念 1.超键,候选键,主键,外键是什么 超键:在关系中能够唯一标识一个元组的属性集称为超键。超键可以是一个属性,也可以是多个属性的组合。 候选键:不含多余元素的超键。也就是说,只要删除候选键中的任意一行属性,它就不再能唯一标识一个元组了。 主键:由用户自主选择的能唯一标识一个元组的键,它是超键的一部分。主键的取值不能为空。 外键:在一个关系模式中,存在一个属性,它是其他关系模式的主键,那么称其为当前关系模式的外键。 参考: SQL–超键、候选键、主键、外键的认识和区分 . 2.为什么选择自增列作为主键。 如果选择自增列作为主键,每次插入新纪录时,直接添加在当前记录末尾的后续位置即可,当一个页写满了,就会 开辟一个新的页。 而如果使用非自增列作为主键,比如说像身份证号码,学号这样近似无规则的属性。那么数据块为了维护索引, 会频繁地进行移动原有的数据,分页等操作。一来会增加大量的开销,二来分页操作会导致大量的碎片,使得 索引结构不紧致。 例如在聚集索引中,插入一个随机索引值的数据可能会使数据库为了维护索引而大量地对原有数据进行物理地址的 移动。而在非聚集索索引中,则涉及指针的变动。 3.触发器的作用 触发器是一种特殊的存储过程,主要是通过事件来触发执行的,这些事件包括UPDATE,DELETE,和INSERT操作。 触发器的使用可以强化约束,保证数据库的完整性和一致性

备忘录模式

a 夏天 提交于 2020-01-20 00:51:12
一、定义 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。 二、用处和缺点 用处:适用于功能比较复杂,但需要维护或记录属性历史的类。可以根据保存的memento信息还原到前一个状态。 缺点:角色状态需要存储到另一个备忘录对象中,在资源消耗上,内存消耗较大。 三、示例代码 /*发起人类 orginator*/ public class GameCharacter { private double bloodVolume; private double blueQuantity; private double experience; public double getBloodVolume() { return bloodVolume; } public void setBloodVolume(double bloodVolume) { this.bloodVolume = bloodVolume; } public double getBlueQuantity() { return blueQuantity; } public void setBlueQuantity(double blueQuantity) { this.blueQuantity = blueQuantity; }

Android大作业:备忘录系统

﹥>﹥吖頭↗ 提交于 2020-01-10 02:35:22
Android大作业:备忘录系统 杂言: android终于结课了,最后的大作业要求做一个备忘录系统。刚拿到题目的时候意气风发立志做一个比系统自带备忘录好的APP自己用,结果做着做着发现自己实在是菜的不行,最后完成的效果离目标相差甚远。不过为了不使自己的作品不只是停留在自己的磁盘里,还是厚颜无耻地把代码和文件贴到博客上,希望能给有需要的朋友带来一点点帮助。本人水平有限(很差,非常差),代码繁琐而且没有很漂亮地注释,请谅解。 实验要求及内容 要求:实现一个备忘录系统,至少包括三个界面 1.设置备忘提醒的用户界面 2.显示备忘提醒的用户界面 3.备忘分组用户界面 详细功能描述: 1)设置备忘提醒的用户界面 添加备忘信息 更新备忘信息 删除备忘信息 2)显示备忘提醒的用户界面 获取数据库中的备忘数据 如时间相符则展现提醒信息 3)备忘分组用户界面 创建新的备忘分组信息并保存到数据库 添加备忘信息到分组中 删除分组、并更新相应的数据库 最终运行效果截图 1)主界面侧滑菜单 2)显示全部笔记 3)删除笔记 4)删除分组 5)添加分组 文件地址 https://download.csdn.net/download/niudaidai233/12093016 (审核中) 来源: CSDN 作者: 涵林同学 链接: https://blog.csdn.net/niudaidai233

2020年,华为将淘汰10%主管!

安稳与你 提交于 2020-01-04 01:02:08
  12 月 31 日消息,据外媒报道, 在 2019 年下半年营收增长进一步放缓后,华为拟明年对其高管团队进行重组,以更好地为客户和供应商提供服务。   作为中国最大的科技公司,华为今年的销售额增长了 18%,达到 8500 亿元人民币,但低于上半年的 23% 增长率,也没有达到自己的内定目标。华为轮值董事长徐直军在给华为 19 万名员工的备忘录中说,如果安卓手机应用程序等所需软件和电路的销售继续受到限制,华为应该为 2020 年遭受类似的打击做好准备。   在特朗普政府 5 月份将华为列入黑名单,称其对美国国家安全构成威胁后,华为做出回应,该公司动员了数千名工程师开发美国关键零部件的替代品,并让其工厂保持运转,同时呼吁国内用户推动 2019 年智能手机出货量增长 16.5%,达到 2.4 亿部。   但徐直军在他的备忘录中谈到,需要在 2020 年淘汰多达 10% 表现最差的经理。他说,许多支持甚至运营单位将被合并或裁员,这些员工可能会被重新分配到其他部门。   徐直军在备忘录中写道:“生存将是我们的第一要务,我们不会像 2019 年上半年那样快速增长。这种增长全年都在持续,这要归功于市场的强劲势头。”   华为创始人任正非表示,美国的限制对华为智能手机部门影响很大,因为该公司被禁止使用谷歌的安卓操作系统和包括 Google Play 和 Gmail 在内的应用程序。