题目:
请根据下面的叙述,依据题目给定的设计模式设计出相应的解决方案,画出解决方案对应的类图并编码实现,编程语言不限。 请利用代理模式(PROXY),实现一个用户权限管理实例,需要进行权限控制的操作有:用户浏览(browse)、读写操作(readWrite)、权限管理(authorityManagement)。权限有三种,分别是:游客(genericUser)、已注册用户(registeredUser)、管理员(administrator) 其中游客可以进行的操作为:用户浏览 已注册用户可以进行的操作为:用户浏览、读写操作 管理员可以进行的操作为:用户浏览、读写操作、权限管理 用户权限不够时提示"您无法获得该权限操作"并阻止相应操作。 |
类图:
代码:
package Proxy;
interface IUserOper
{
void browse();
void readWrite();
void AuthorityManagement();
};
class UserOper implements IUserOper
{
public void browse(){
System.out.println("执行浏览操作");
}
public void readWrite(){
System.out.println("执行读写操作");
}
public void AuthorityManagement()
{
System.out.println("执行权限管理操作");
}
};
class AdministratorProxy implements IUserOper
{
private UserOper userOper = new UserOper();
public void browse(){
System.out.print("权限通过——");
userOper.browse();
}
public void readWrite(){
System.out.print("权限通过——");
userOper.readWrite();
}
public void AuthorityManagement(){
System.out.print("权限通过——");
userOper.AuthorityManagement();
}
};
class RegisteredUserProxy implements IUserOper
{
private UserOper userOper = new UserOper();
public void browse(){
System.out.print("权限通过——");
userOper.browse();
}
public void readWrite()
{
System.out.print("权限通过——");
userOper.readWrite();
}
public void AuthorityManagement(){
System.out.println("您无法获得该权限操作——");
}
};
class GenericUserProxy implements IUserOper
{
private UserOper userOper = new UserOper();
public void browse(){
System.out.print("权限通过——");
userOper.browse();
}
public void readWrite(){
System.out.println("您无法获得该权限操作——");
}
public void AuthorityManagement()
{
System.out.println("您无法获得该权限操作——");
}
};
public class SecurityProxy {
public static void main(String[] args){
System.out.println("游客操作");
GenericUserProxy gu = new GenericUserProxy();
gu.browse();
gu.readWrite();
gu.AuthorityManagement();
System.out.println("注册用户操作");
RegisteredUserProxy ru = new RegisteredUserProxy();
ru.browse();
ru.readWrite();
ru.AuthorityManagement();
System.out.println("管理员操作");
AdministratorProxy au = new AdministratorProxy();
au.browse();
au.readWrite();
au.AuthorityManagement();
}
}
结果: