延续一贯风格,简单直接,深入浅出,融会贯通就靠你自己了~~~ 一般来说, 我们的后台系统都有角色的概念,不同管理员权限不一样,能够执行的操作也不同。 系统管理员 开发人员 运维人员 测试人员 比如一个用户进来,我们需要根据不同的权限分别获取不同的执行权限。那么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 等分别走不同的处理器, 则可以先定义 注解类型,然后根据不同的注解类型来获取不同的处理器。 本人实际业务场景,传过来的不同业务类型,好烦呀,没有个统一的界定,估计是需求别人没有给我讲清楚? 当然 并不是唯一的实现方式,工程模式,策略模式都可以实现该功能。