这篇文章主要讲解了如何使用javascript中的状态模式,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
创新新互联,凭借10年的成都网站设计、成都网站制作经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有上1000+案例。做网站建设,选创新互联。介绍:状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。状态模式将一个对象的状态从该对象中分离出来,使得对象状态可以灵活变化。
定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类,其别名为状态对象,状态模式是一种对象行为型模式。
场景:在很多情况下我们的页面需要做一些状态判断,是否注册,是否登录,剩余金额是否大于500等等,我们通常是在组件中通过if…else…来做不同的处理,这种方式耦合严重不满足单一职责原则。如何解决这个问题呢,这一节我们利用状态模式来解决对象的状态切换。
示例:
var Dialog = function(){ var _state = null; this.setState = function(state){ _state = state; } this.getState = function(){ return _state; } } var ShowState = function(){ this.doAction = function(dialog){ console.log("对Dialog设置显示状态:"); dialog.setState(this); } this.toString = function(){ console.log("显示中......"); } } var HideState = function(){ this.doAction = function(dialog){ console.log("对Dialog设置隐藏状态:"); dialog.setState(this); } this.toString = function(){ console.log("已隐藏......"); } } var dialog = new Dialog(); var showState = new ShowState(); var hideState = new HideState(); showState.doAction(dialog); //对Dialog设置显示状态: dialog.getState().toString(); //显示中...... hideState.doAction(dialog); //对Dialog设置隐藏状态 dialog.getState().toString(); //已隐藏......