1、如果没有枚举类型。代码很可能会是这样iftype==1then--dosomethingelseiftype==2then--dosomethingend
2、为了改进代码,我们在全局的一个文件中编写下面的代码localENUM={}--布阵类型PVE进攻ENUM.BATTLE_TYPE_PVE_ATT=1--布阵类型PVE防守ENUM.BATTLE_TYPE_PVE_DEF=2returnENUM
3、有了上面的定义,我们代码可读性得到提升。最开始的代码筐毙险裆变成这样了:iftype==ENUM.BATTLE_TYPE_霸烹钟爷PVE_ATTthen--dosomethingelseiftype==ENUM.BATTLE_TYPE_PVE_DEFthen--dosomethingend
4、现在代码貌似变得优雅了。但我们不知道一共有多少枚举类型。新增加一个类型的时候,我们的代码需要跟着变化。这违反开闭原则。为了遵守开闭原则。我们先修改enum的代码。localENUM={}--布阵类型PVE进攻ENUM.BATTLE_TYPE={PVE_ATT=1,PVE_DEF=2,}returnENUM
5、修改enum实现后。方位的代码变成这样iftype==ENUM.BATTLE_TYPE.PVE_ATTthen--dosomethingelseiftype==ENUM.BATTLE_TYPE.PVE_DEFthen--dosomethingend
6、localg_cmd={[苇质缵爨ENUM.BATTLE_TYPE.PVE_ATT]=func1,[ENUM.BATTLE_TYPE.PVE_DEF柯计瓤绘]=func2}functiondo_action(args)localf=g_cmd[args.type]f()end经过这样的修改,只修配置文件。就可增加功能。完全拥抱了变化