最佳实践之JS-状态模式

来源:互联网 发布:语文试卷编制软件 编辑:程序博客网 时间:2024/05/18 07:36

前因:

项目接口会返回很多状态码,通常的做法是使用ifelse  去处理状态,或者将if else  封装成一个方法,调用但是即便用方法封装,还是完全避免用 if  else 去处理状态,今天我们采用一种新的尝试,使用状态模式来进行N多种状态的下的逻辑处理,来避免N多种状态下反锁的if else 语句维护困难的问题。

状态模式:不同的状太会产生不同的行为,即当一个对象内部状态改变时,会导致其行为发生变化。

 

实践:

IVR项目中提交预约回电时,场景不同会有不同的错误码,如20,30,40,50……等等,如果采用if else 语句判断会非常繁琐并难以维护,采用状态模式就方便很多,具体实践如下:

首先定义一个状态类,根据不同状态定义不同行为,并最终对外提供一个API,

var ExecuteState = function(){

   var StatesFn = {

       states_7:function(data){

           //功能代码

       },

       state_20:function(data,currentTime){

           //功能代码

       },

       state_30:function(data,currentTime){

          //功能代码

       },

       state_40:function(data,currentTime){

           //功能代码

    }

   function executeFn(state,data,currentTime){

       StatesFn['state_'+state] && StatesFn['state_' +state](data,currentTime);

    }

 

   return {

       execute:executeFn

    }

}();

 

调用API:ExecuteState.execute(state,data,currentTime);

如此就打打减少了ifelse 使用量,当状态模式使用到极致时,程序中是没有if else 出现的,当然如果需求很稳定,很简单的一个分支判断就可以搞定的情况下,如果采用状态模式实现,这样开发成本会很高,所以应该根据项目实际情况制定相应的实现方案,个人观点,如有雷同,纯属巧合。

0 0
原创粉丝点击