还在用 if else 你就out 了

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 等分别走不同的处理器,

则可以先定义 注解类型,然后根据不同的注解类型来获取不同的处理器。

本人实际业务场景,传过来的不同业务类型,好烦呀,没有个统一的界定,估计是需求别人没有给我讲清楚?

当然 并不是唯一的实现方式,工程模式,策略模式都可以实现该功能。

你可能感兴趣的:(还在用 if else 你就out 了)