标签:java设计模式
Java设计模式-代理模式之静态代理
概念
代理模式分类
一个关于静态代理的例子
package ProxyMode;
/*
* 抽象接口,对应类图中的Subject
*
*/
public interface Subject {
public void SujectShow();
}
package ProxyMode;
public class RealSubject implements Subject{
@Override
public void SujectShow() {
// TODO Auto-generated method stub
System.out.println("杀人是我指使的,我是幕后黑手!By---"+getClass());
}
}
package ProxyMode;
import proxy.RealeSubject;
public class ProxySubject implements Subject{
private Subject realSubject;//代理类中有 老板的引用。
public Subject TakeCall() //通过电话联系
{
return new RealSubject();
}
public void Before()
{
System.out.println("我只是一个代理类,在做事情之前我先声明,接下来的事情跟我无关,我只是受人指使!By---"+getClass());
}
public void After()
{
System.out.println("正如事情还没有发生之前讲的一样,我只是个路人,上面做的事情跟我无关,我是受人指使的! By---"+getClass());
}
@Override
public void SujectShow() {
// TODO Auto-generated method stub
Object o=TakeCall(); //代理类接到了一个电话
if(checked(o)) //检查这个电话是不是老板打过来的
{
Before();
this.realSubject=(Subject)o;
realSubject.SujectShow();
After();
}
else {
System.out.println("不好意思,你权限不够,我帮不了你!");
}
}
boolean checked(Object o) //权限检查,这年头不是谁都可以冒充老板的
{
if(o instanceof RealSubject )
return true;
return false;
}
}
package ProxyMode;
public class ProxyTest {
public static void main(String[] args)
{
ProxySubject proxy=new ProxySubject();
proxy.SujectShow();
}
}
执行结果:
我只是一个代理类,在做事情之前我先声明,接下来的事情跟我无关,我只是受人指使!By---class ProxyMode.ProxySubject
杀人是我指使的,我是幕后黑手!By---class ProxyMode.RealSubject
正如事情还没有发生之前讲的一样,我只是个路人,上面做的事情跟我无关,我是受人指使的! By---class ProxyMode.ProxySubject
标签:java设计模式
原文地址:http://blog.csdn.net/yujin753/article/details/46648079