论坛权限控制代理 在一个论坛中已注册用户和游客的权限不同,已注册的用户拥有看帖、发帖、修改自己的帖子等功能;而游客只能看帖,没有其他权限。使用代理模式来设计该权限管理模块。 在本实例中我们使用代理模式中的保护代理,该代理用于控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。
BBS.java
package bbsProxy;
public interface BBS {
public void function();
}
RealBBS.java
package bbsProxy;
public class RealBBS implements BBS {
@Override
public void function() {
// TODO Auto-generated method stub
System.err.println("您可以有以下权限:");
System.err.println("看帖、发帖、修改自己的帖子");
}
}
Proxy.java
package bbsProxy;
public class Proxy implements BBS {
private RealBBS bbs=new RealBBS();//维持一个对对真实主题对象的引用
private int permission=2; //权限
private String name;
public Proxy(String name,int permission) {
this.name=name;
this.permission=permission;
}
@Override
public void function() {
// TODO Auto-generated method stub
if(permission>=2) {
System.err.println("-----------------");
System.err.println("尊敬的bbs会员:"+this.name);
bbs.function();
}
else {
System.err.println("-----------------");
System.err.println("亲,"+this.name+",你只是个游客,你只能看帖哦!");
}
}
}
Client.java
package bbsProxy;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
BBS s1,s2;
//游客
s1=new Proxy("张三",1); //权限为1
s1.function();
//会员
s2=new Proxy("李四",2); //权限为2
s2.function();
}
}
运行截图:
![](https://i-blog.csdnimg.cn/blog_migrate/505daa2dac4cea85eb0d37d338f858f6.png)