1、简单直接 上场景:
一般来说, 我们的后台系统都有角色的概念,不同管理员权限不一样,能够执行的操作也不同。
- 系统管理员
- 开发人员
- 运维人员
- 测试人员
比如一个用户进来,我们需要根据不同的权限分别获取不同的执行权限。那么SAO操作就来了:~~~
String result = StringUtils.EMPTY;
if ("admin".equals(roleName)) {
return "admin";
} else if ("developer".equals(roleName)) {
return "developer";
} else if ("tester".equals(roleName)) {
return "tester";
} else {
result = "unknow";
}
return result;
如果角色增加了,十几个 几十个角色,这样一来就非常不优雅了,别人阅读起来也是非常费劲了,你有什么好的方式来应对这种情况呢?
枚举不香嘛?
首先定义一个接口,表示不同角色所能做的操作。
public interface RoleOperation {
String ops();
}
枚举实现该接口
public enum RoleEnum implements RoleOperation {
ROLE_ADMIN {
@Override
public String ops() {
return "admin";
}
},
ROLE_DEVELOPER {
@Override
public String ops() {
return null;
}
},
ROLE_TESTER {
@Override
public String ops() {
return "tester";
}
}
}
调用地方一行代码搞定:
public static String judge(String roleName) {
return RoleEnum.valueOf(roleName).ops();
}
是不是 很 easy ~~~~
这里延伸下,实际业务场景可以使用的套路,虽然自己的业务没有套上去 哈哈哈哈哈------------------------------------
场景描述:如果根据传过来的不同业务类型, 比如:
pay_type 支付类型,weixin alipay bank 等分别走不同的处理器,
则可以先定义 注解类型,然后根据不同的注解类型来获取不同的处理器。
本人实际业务场景,传过来的不同业务类型,好烦呀,没有个统一的界定,估计是需求别人没有给我讲清楚?