最佳实践之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 出现的,当然如果需求很稳定,很简单的一个分支判断就可以搞定的情况下,如果采用状态模式实现,这样开发成本会很高,所以应该根据项目实际情况制定相应的实现方案,个人观点,如有雷同,纯属巧合。
- 最佳实践之JS-状态模式
- js之状态模式
- js最佳实战之----编程实践
- 《js高级程序设计》之最佳实践(笔记)
- JS最佳实践
- JS最佳实践
- js笔记 -- 最佳实践
- require.js 最佳实践
- DAO模式最佳实践
- DAO模式最佳实践
- 设计模式最佳实践
- JS设计模式之状态模式
- js设计模式之状态模式
- web移动开发最佳实践之js篇
- web移动开发最佳实践之js篇
- JS高级程序设计之代码的最佳实践
- Java中单例设计模式之最佳实践举例
- rdc最佳实践之开发模式——git flow
- Understanding and Using Pointers in Delphi
- cordova 一个将web应用程序封装成app的框架
- 再次认识Struts2(一)
- vmware安装centos6
- IMS----IP Multimedia Subsystem
- 最佳实践之JS-状态模式
- 【Leetcode】Two Sum II - Input array is sorted
- oracle中层次查询start by ... connect by....详解
- 每天一条liunux--touch命令
- 关于Notification通知的一点愚见(自定义通知栏)
- 便捷提醒小插件之gritter
- mybatis传List
- Synchronized常见用法
- Netty使用MessagePack首先自定义编解码器