您的位置:首页 > 科技 > IT业 > 怎么做公众号教程_美国新冠疫情最新消息数据_北京seo招聘网_百度搜索引擎竞价排名

怎么做公众号教程_美国新冠疫情最新消息数据_北京seo招聘网_百度搜索引擎竞价排名

2024/11/17 9:29:22 来源:https://blog.csdn.net/John_ToStr/article/details/142623745  浏览:    关键词:怎么做公众号教程_美国新冠疫情最新消息数据_北京seo招聘网_百度搜索引擎竞价排名
怎么做公众号教程_美国新冠疫情最新消息数据_北京seo招聘网_百度搜索引擎竞价排名

前言

        在组建构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定? “状态变化” 模式为这一问题提供了一种解决方案

定义

        在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态        

动机

        在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些共有接口来让其他对象得到对象的状态,便会暴露对象的实现细节

        如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性        

案例

        代码

class Memento
{string state;//..
public:Memento(const string & s) : state(s) {}string getState() const { return state; }void setState(const string & s) { state = s; }
};class Originator
{string state;//....
public:Originator() {}Memento createMomento() {Memento m(state);return m;}void setMomento(const Memento & m) {state = m.getState();}
};int main()
{Originator orginator;//捕获对象状态,存储到备忘录Memento mem = orginator.createMomento();//... 改变orginator状态//从备忘录中恢复orginator.setMomento(memento);
}

类图

        

总结

        备忘录存储原发器对象的内部状态,在需要时恢复原发器状态

        备忘录模式的核心是信息隐藏,即Originator需要向外界隐藏信息,保持其封装性。但同时又需要将状态保持到外界

        由于现在语言运行时都具有相当的对象序列化支持,因此往往采用效率较高、又较容易正确实现的序列化方案来是备忘录模式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com