iis5.1 新建网站,做外贸需要做个英文网站吗,企业网站模板下载哪家好,怎样创建网站或网页定义 在不破坏封装性的前提下#xff0c;捕获一个对象的内部状态#xff0c;并在该对象之外保存这个状态#xff1b; 行为型模式 角色 发起人角色#xff08;Originator#xff09;#xff1a;记录当前时刻的内部状态#xff0c;负责定义哪些属于备份范围的状态#xf… 定义 在不破坏封装性的前提下捕获一个对象的内部状态并在该对象之外保存这个状态 行为型模式 角色 发起人角色Originator记录当前时刻的内部状态负责定义哪些属于备份范围的状态负责创建和恢复备忘录数据备忘录角色Memento负责存储发起人对象的内部状态在需要的时候提供发起人需要的内部状态管理者角色Caretaker对备忘录 进行管理保存和提供备忘录从网上找到的例图 适用场景 需要保存一个对象在某一个时刻的状态或者部分状态如果用一个接口来让其他对象得到这些状态将会暴露对象的实现细节并破坏对象的封装性一个对象不希望外界直接访问其内部状态通过负责人可以间接访问其内部状态例子 这个就像你写代码当你不小心删除了几行代码这个时候你只需要command z 就可以返回这就像备忘录模式系统帮你保存之前的状态实现代码 /*** Created by George on 16/7/16.*/
// 发起角色
var Originator function () {this.getState function () {return this.state;};this.setState function (state) {this.state state;};this.createMemento function () {return new Memento(this.state);};this.restoreMemento function (memento) {this.setState(memento.getState());};
};// 备忘录
var Memento function (state) {this.state state;this.getState function () {return this.state;};this.setState function (state) {this.state state;};
};// 负责人角色
var Caretaker function () {this.memento null;this.getMemento function () {return this.memento;};this.setMemento function (memento) {this.memento memento;};
};var originator new Originator();
originator.setState(状态1 );
console.log(初始状态 originator.getState());var caretaker new Caretaker();
caretaker.setMemento(originator.createMemento());
originator.setState(状态2 );console.log(改变后状态 originator.getState());originator.restoreMemento(caretaker.getMemento());console.log(恢复状态 originator.getState());实现结果 优缺点 当发起人角色中的状态改变的时候可以还原到之前的状态备份的状态是保存在发起人角色之外的这样发起人角色就不需要对各个备份的状态进行管理 注意的是 备忘录模式都是多状态和多备份的发起人角色的状态需要存储到备忘录对象中对资源的消耗是不叫严重的 转载于:https://www.cnblogs.com/George1994/p/6037625.html