JS设计模式之状态模式概念与用法分析

2019-11-16,,,,

本文实例讲述了JS设计模式状态模式概念与用法。分享给大家供大家参考,具体如下:

1. 概述

当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

2. 解决的问题

主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。

function Context( _state ) {
 this.state = _state;
 this.request = function() {
  this.state.Handle( this );
 }
}
function ConcreteStateA() {
 this.Handle = function( context ) {
  console.log("A");
  context.state = new ConcreteStateB();
 }
}
function ConcreteStateB() {
 this.Handle = function( context ) {
  console.log("B");
  context.state = new ConcreteStateA();
 }
}
// 设置Context的初始状态为ConcreteStateA
var context = new Context(new ConcreteStateA());
// 不断地进行请求,同时更改状态
context.request();
context.request();

状态模式的使用场景也特别明确,有如下两点:

一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。

一个操作中含有大量的分支语句,而且这些分支语句依赖于该对象的状态。状态通常为一个或多个枚举常量的表示。

应用场景:

打电话有如下几种状态:获取电话号码、拨号中、通话中、通话结束。
这几种状态的顺序是以次进行的,那么我们就可以根据这几种状态来实现状态模式;

获取电话号码

拨号中

通话中

通话结束

不断地去调用这个方法context.request(); 来判断当前属于那种状态;

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

您可能感兴趣的文章:

  • JavaScript设计模式经典之命令模式
  • 深入理解JavaScript系列(34):设计模式之命令模式详解
  • JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
  • JS设计模式之观察者模式实现实时改变页面中金额数的方法
  • JS设计模式之策略模式概念与用法分析
  • JS设计模式之访问者模式定义与用法分析
  • JavaScript设计模式之调停者模式实例详解
  • JS设计模式之责任链模式实例详解
  • JavaScript编程设计模式之构造器模式实例分析
  • JavaScript 设计模式 安全沙箱模式
  • JS设计模式之命令模式概念与用法分析

《JS设计模式之状态模式概念与用法分析.doc》

下载本文的Word格式文档,以方便收藏与打印。