Java模拟简单的权限判断,
时间: 2024-10-21 10:12:10 浏览: 12
在Java中,你可以通过面向对象的设计来模拟简单的权限判断。一种常见的做法是创建一个`User`类和一个或多个表示不同角色或权限的`Role`类。每个用户可以拥有多角色,并且每个角色关联着特定的权限列表。
首先,定义一个基础的`Permission`接口:
```java
public interface Permission {
boolean hasPermission(String requiredPermission);
}
```
然后创建具体的权限类,如`ViewData`, `EditData`, 等:
```java
public class ViewData implements Permission {
// 实现hasPermission方法,检查是否允许查看数据
}
public class EditData implements Permission {
// 实现hasPermission方法,检查是否允许编辑数据
}
```
接下来,定义`Role`类,它包含一组权限:
```java
public class Role {
private List<Permission> permissions;
public Role(List<Permission> permissions) {
this.permissions = permissions;
}
public boolean canPerform(Permission permission) {
return permissions.stream().anyMatch(p -> p.hasPermission(permission.getRequiredPermission()));
}
}
```
最后,`User`类包含一个角色集合:
```java
public class User {
private List<Role> roles;
public User(List<Role> roles) {
this.roles = roles;
}
public boolean canPerformPermission(String requiredPermission) {
for (Role role : roles) {
if (role.canPerform(new Permission() { // 创建临时的Permission实例,传递所需的权限
@Override
public boolean hasPermission(String requiredPermission) {
return requiredPermission.equals(this.requiredPermission);
}
})) {
return true;
}
}
return false;
}
}
```
现在,你可以像这样检查用户是否有某个权限:
```java
List<Role> userRoles = ...; // 用户的角色列表
User user = new User(userRoles);
if (user.canPerformPermission("view")) {
System.out.println("用户有查看权限");
} else {
System.out.println("用户无查看权限");
}
```
阅读全文