1.使用多个if/else的坏处在这里插入代码片
这样一来非常不优雅,别人阅读起来很费劲;二来则是以后如果再复杂一点,或者想要再加条件的话不好扩展;而且代码一改,以前的老功能肯定还得重测,岂不疯了……
当然有人会说用 switch/case来写是否会优雅一些呢?答案是:毛区别都没有!
2.枚举法,改进
定义公共接口 RoleOperation,表示不同角色的操作
public interface RoleOperation{
String op();// 表示某个角色可以做哪些op操作
}
接下来我们将不同角色的情况全部交由枚举类来做,定义一个不同角色有不同权限的枚举类 RoleEnum:
public enum RoleEnum implements RoleOperation{
//系统管理员
ROLE_ROOT_ADMIN{
@Override
public String op(){
return "ROLE_ROOT_ADMIN:"+" has AAA permission";
}
},
// 订单管理员(有B操作权限)
ROLE_ORDER_ADMIN {
@Override
public String op(){
return "ROLE_ROOT_ADMIN:"+" has AAA permission";
}
},
//普通用户(有C操作权限)
ROLE_NORMAL {
@Override
public String op(){
return "ROLE_ROOT_ADMIN:"+" has AAA permission";
}
};
}
接下来调用就变得异常简单了,一行代码就行了, if/else也灰飞烟灭了
public class JudgeRole {
public String judge( String roleName ){
// 一行代码搞定!之前的if/else没了!
return RoleEnum.valueOf(roleName).op();
}
}