项目需求:根据登录用户的角色,展示不同数据
用户角色权限 管理员:展示所有数据 经销商:展示分配的数据
1.定义抽象类 抽象执行方法
public abstract class ExecuteAbstract {
public abstract void execute();
}
2.定义角色实现类
/**
* 管理员执行实现类
*/
public class AdminRoleExecute extends ExecuteAbstract {
@Override
public void execute() {
//todo 管理员执行逻辑
}
}
/**
* 用户执行实现类
*/
public class CommonRoleExecute extends ExecuteAbstract {
@Override
public void execute() {
//todo 用户执行逻辑
}
}
3.定义角色对应枚举类
/**
* 角色枚举类
*/
public enum RoleEnmu {
//相当于在枚举中创建的对象
ROLE_ADMIN("admin",new AdminRoleExecute()),
ROLE_COMMON("common",new CommonRoleExecute());
private String roleKey;
private ExecuteAbstract executeAbstract;
RoleEnmu(){}
RoleEnmu(String roleKey,ExecuteAbstract executeAbstract){
this.roleKey = roleKey;
this.executeAbstract = executeAbstract;
}
public String getRoleKey() {
return roleKey;
}
public void setRoleKey(String roleKey) {
this.roleKey = roleKey;
}
public ExecuteAbstract getExecuteAbstract() {
return executeAbstract;
}
public void setExecuteAbstract(ExecuteAbstract executeAbstract) {
this.executeAbstract = executeAbstract;
}
/**
根据角色 roleKey 匹配 角色实现类
*/
public static RoleEnmu match(String roleKey){
RoleEnmu[] testEnmus = RoleEnmu.values();
for (RoleEnmu enmus : testEnmus) {
if (enmus.roleKey.equals(name)){
return enmus;
}
}
return null;
}
}
4.测试逻辑
public class Testtt {
public static void main(String[] args) throws FileNotFoundException {
//模拟管理员角色
String roleKey = "admin";
//枚举类方法 匹配 管理员 执行实现类
RoleEnmu roleEnmu = RoleEnmu.match(roleKey);
//管理员执行实现类 执行逻辑
roleEnmu.getExecuteAbstract().execute();
String commonKey = "common";
RoleEnmu roleEnmu1 = RoleEnmu.match(commonKey);
roleEnmu1.getExecuteAbstract().execute();
}