十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要讲解了如何使用javascript中的备忘录模式,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
成都创新互联拥有一支富有激情的企业网站制作团队,在互联网网站建设行业深耕十年,专业且经验丰富。十年网站优化营销经验,我们已为1000+中小企业提供了网站制作、成都做网站解决方案,按需策划设计,设计满意,售后服务无忧。所有客户皆提供一年免费网站维护!介绍:在我们的开发中偶尔会遇到这样一种情况,需要对用户的行为进行撤销。要想实现撤销,首先需要保存软件系统的历史状态,当用户执行撤销时用之前的状态覆盖当前状态。本节介绍的备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便的回到一个特定的历史步骤。
定义:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态,它是一种对象行为模式,其别名为Token。
场景:使用js实现一个简单的状态机,用于状态的保存,回退。实现下备忘录模式。
示例:
var Memento = function(state){ var _state = state; this.getState = function(){ return _state; } } var Originator = function(){ var _state; this.setState = function(state){ _state = state; } this.getState = function(){ return _state; } this.saveStateToMemento = function(){ return new Memento(_state) } this.getStateFromMemento = function(memento){ _state = memento.getState(); } } var CareTaker = function(){ var _mementoList = []; this.add = function(memento){ _mementoList.push(memento); } this.get = function(index){ return _mementoList[index]; } } var originator = new Originator(); var careTaker = new CareTaker(); originator.setState("State 1"); originator.setState("State 2"); careTaker.add(originator.saveStateToMemento()); originator.setState("State 3"); careTaker.add(originator.saveStateToMemento()); originator.setState("State 4"); console.log("当前状态: " + originator.getState()); // 当前状态: State 4 originator.getStateFromMemento(careTaker.get(0)); console.log("恢复第一次保存状态: " + originator.getState()); // 恢复第一次保存状态: State 2 originator.getStateFromMemento(careTaker.get(1)); console.log("恢复第二次保存: " + originator.getState()); // 恢复第二次保存: State 3