在一个论坛中已注册用户和权限不同,已注册的用户拥有发帖、修改自己的注册信息、修改自己的帖子等功能;而游客只能看到别人发的帖子,没有其他权限。试使用保护代理来设计该权限管理模块
20ruan2
第一步,定义抽象主题角色AbstractPermission
public abstract class AbstractPermission
{
public abstract void modifyUserInfo();
public abstract void viewNote() ;
public abstract void publishNote() ;
public abstract void modifyNote() ;
public abstract void setLevel(int level);
}
第二步,定义真实主题角色RealPermission
public class RealPermission extends AbstractPermission
{
public void modifyUserInfo() {
System.out.println("修改用户信息");
}
public void viewNote() {
System.out.println("您可以查看帖子");
}
public void publishNote() {
System.out.println("发布新贴");
}
public void modifyNote() {
System.out.println("修改帖子");
}
public void setLevel(int level) {
}
}
第三步,定义代理主题角色PermissionProxy
public class PermissionProxy extends AbstractPermission
{
private RealPermission permission = new RealPermission();
private int level = 0;
public void modifyUserInfo() {
if(level==0){
System.out.println("对不起,您没有修改用户信息的权限!");
}
else if(level==1) {
permission.modifyUserInfo();
}
}
public void viewNote()
{
permission.viewNote();
}
public void publishNote()
{
if(level==0){
System.out.println("对不起,您没有发布新贴的权限!");
}
else if(level==1) {
permission.publishNote();
}
}
public void modifyNote()
{
if(level==0){
System.out.println("对不起,您没有修改帖子的权限!");
}
else if(level==1) {
permission.modifyNote();
}
}
public void setLevel(int level)
{
this.level=level;
}
}
第四步,定义用户测试类Client:
public class Client {
public static void main(String[] args) {
AbstractPermission a1,a2;
a1=new PermissionProxy();
a2=new PermissionProxy();
System.out.println("游客状态下:");
a1.setLevel(0);//0代表游客
a1.viewNote();
a1.modifyUserInfo();
a1.publishNote();
a1.modifyNote();
System.out.println("---------------");
System.out.println("用户状态下:");
a2.setLevel(1);//1代表用户
a2.viewNote();
a2.modifyUserInfo();
a2.publishNote();
a2.modifyNote();
}
}