- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE1
PAGE1
设计模式–备忘录模式:捕获对象的内部状态
1备忘录模式的概念
备忘录模式(MementoPattern)是一种行为设计模式,它允许在不违反封装原则的情况下捕获和恢复对象的内部状态。这种模式特别适用于需要保存和恢复对象状态的场景,比如撤销和重做功能,或者当对象需要在特定时刻恢复到之前的某个状态时。
1.1原理
在备忘录模式中,对象的内部状态被封装在称为“备忘录”的对象中。原发器(Originator)负责创建备忘录并保存其内部状态,而不暴露这些状态的细节。备忘录对象通常包含一个时间戳,以记录状态被捕获的时刻。备忘录模式还包括一个管理者(Caretaker),它负责存储备忘录对象并提供恢复操作,但不访问备忘录的内部状态。这样,原发器的内部状态就只能通过自身的方法进行访问和修改,保证了封装性。
1.2类图
以下是备忘录模式的基本类图:
classDiagram
classOriginator{
+voidsetState(Stringstate)
+StringgetState()
+MementocreateMemento()
+voidrestoreMemento(Mementomemento)
+state:String
}
classMemento{
+voidsetState(Stringstate)
+StringgetState()
}
classCaretaker{
+voidaddMemento(Mementomemento)
+MementogetMemento(intindex)
}
Originator1--*Memento:has
Caretaker1--*Memento:has
Originator--Memento:createMemento()
Originator--Memento:restoreMemento()
Caretaker--Memento:addMemento()
Caretaker--Memento:getMemento()
2备忘录模式的应用场景
备忘录模式适用于以下几种情况:-当需要能够撤销一个或多个操作,或者在系统中实现重做功能时。-当需要保存对象在特定时刻的状态,以便在需要时能够恢复。-当对象的内部状态需要被封装,不能让外部对象直接访问和修改时。
2.1示例代码
2.1.1Originator类
classOriginator{
privateStringstate;
publicOriginator(Stringstate){
this.state=state;
}
publicMementocreateMemento(){
returnnewMemento(state);
}
publicvoidrestoreMemento(Mementomemento){
this.state=memento.getState();
}
publicvoidsetState(Stringstate){
this.state=state;
}
publicStringgetState(){
returnstate;
}
}
2.1.2Memento类
classMemento{
privatefinalStringstate;
publicMemento(Stringstate){
this.state=state;
}
publicStringgetState(){
returnstate;
}
}
2.1.3Caretaker类
importjava.util.ArrayList;
importjava.util.List;
classCaretaker{
privateListMementomementos=newArrayList();
publicvoidaddMemento(Mementomemento){
mementos.add(memento);
}
publicMementogetMemento(intindex){
returnmeme
您可能关注的文档
- UI设计师-UI设计模式与组件库-Ant Design_状态与进度组件:进度条与骨架屏.docx
- UI设计师-UI设计模式与组件库-Ant Design_自定义主题与样式.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_Apple Human Interface Guidelinesall.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_测试与优化用户界面.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_导航设计与模式.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_多语言与地区适配.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_反馈与过渡动画.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_可访问性设计.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_控制与交互元素设计.docx
- UI设计师-UI设计模式与组件库-Apple Human Interface Guidelines_视觉设计基础.docx
- 2024-2030年中国弹性体行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国废铁利用行业市场深度调研及竞争格局与投资前景研究报告.docx
- 2024-2030年中国开口夹紧环行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国异麦芽酮糖市场供需现状与竞争前景分析研究报告.docx
- 2024-2030年中国异构计算行业规模走势预测及未来创新趋势研究报告.docx
- 2024-2030年中国带座轴承行业现状动态及投资规模预测研究报告.docx
- 2024-2030年中国应急指挥通信系统行业市场发展前瞻及投资战略研究报告.docx
- 2024-2030年中国并网光伏系统行业市场发展趋势与前景展望战略分析报告.docx
- 施工成本控制分析课件.pptx
- 2024-2030年中国心室辅助装置(VAD)行业市场发展趋势与前景展望战略分析报告.docx
文档评论(0)