我用的三星fold韩版5g5G手机,韩版。怎样进行屏幕阅读文字转语音。

在GOF的《设计模式:可复用面向对象軟件的基础》一书中对备忘录模式是这样说的:在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态这樣以后就可将该对象恢复到原先保存的状态。

有时有必要记录一个对象的内部状态为了允许用户取消不确定的操作或从错误中恢复过来,需要实现检查点和取消机制而要实现这些机制,你必须事先将状态信息保存在某处这样才能将对象恢复到它们先前的状态。如何实現这个将状态信息保存在某处呢使用?由于对象通常封装了其部分或所有的状态信息使得其状态不能被其他对象访问,也就不可能在該对象之外保存其状态了由于原型模式总是返回对象的全部状态信息,同时原型模式使其状态能被其它对象访问这样就违反了封装的原则,还可能有损应用的可靠性和可扩展性

再拿上面的《仙剑奇侠传》进行分析,当我们在打大BOSS之前存档此时就需要将对应的游戏场景,任务信息人物信息等等状态存储起来;当赢得大BOSS之后,覆盖之前的存档时就将之前的存档丢弃,新建立一个存档保存当前的状態信息;如果打输了,恢复存档就将之前的存档信息读取出来,还原到打大BOSS之前的游戏场景重新开始打大BOSS。这里面就是使用的备忘录模式

一个备忘录是一个对象,它存储另一个对象在某个瞬间的内部状态而后者称为备忘录的原发器。当需要设置原发器的检查点时取消操作机制会向原发器请求一个备忘录。原发器用描述当前状态的信息初始化该备忘录只有原发器可以向备忘录中存取信息,备忘录對其他的对象是“不可见”的

Memento:备忘录存储原发器对象的内部状态。原发器根据需要决定备忘录存储原发器的哪些内部状态;防止原发器以外的其他对象访问备忘录备忘录实际上有两个接口,管理者只能看到备忘录的窄接口————它只能将备忘录传递给其他对象相反,原发器能够看到一个宽接口允许它访问返回到先前状态所需的所有数据。理想的情况是只允许生成备忘录的那个原发器访问本备忘錄的内部状态;
Originator:原发器创建一个备忘录用以记录当前时刻它的内部状态;我们使用备忘录恢复内部状态;
Caretaker:负责保存好备忘录;但是,不能对备忘录的内容进行操作或检查

备忘录模式是按照以下方式进行协作的:
管理器向原发器请求一个备忘录,保留一段时间后将其送回给原发器;而有的时候管理者不会将备忘录返回给原发器,因为原发器可能根本不需要退到先前的状态备忘录是被动的,只有创建备忘录的原发器会对它的状态进行赋值和检索如下面的时序图:

在以下情况下使用备忘录模式:

  1. 必须保存一个对象在某一个时刻的部汾或完整状态,这样以后需要时它才能恢复到先前的状态;
  2. 如果一个用接口来让其它对象直接得到这些状态将会暴露对象的实现细节并破坏对象的封装性。

我再根据上面的《仙剑奇侠传》来完成备忘录模式代码如下:

86 // 读档,从新开始

备忘录模式在实际应用中也不少;我們在进行文档编辑时经常使用的撤销操作。使用C++实现备忘录模式的关键点在于Originator类是Memento的友元类这样就使得管理备忘录的Caretaker对象,以及其它對象都不能读取、设置备忘录只有Originator类才能进行备忘录的读取和设置。由于备忘录主要是用于对对象的状态进行备份实现了撤销操作,洳果对象的状态数据很大很多时在进行备忘时,就会很占用资源这个是我们在实际开发时需要考虑的东西。结合之前的设计模式在總结时,说到命令模式支持事物的回退而这个就是依靠的备忘录模式来实现的。好了备忘录模式就总结至此。希望对大家有用

当前主题:代码转换大小写

评论數:0 20小时前

我要回帖

更多关于 三星fold韩版5g 的文章

 

随机推荐