package com.huateng;
/**
* 接口
* @author Administrator
*
*/
public interface Subject {
public void request();
}
#############
package com.huateng;
/**
* 被代理类
* @author Administrator
*
*/
public class RealSubject implements Subject{
@Override
public void request(){
System.out.println("业务处理");
}
}
#################
package com.huateng;
public class ProxySubject implements Subject{
//代理的接口
private Subject subject = null;
//默认被代理者
public ProxySubject(){
subject = new RealSubject();
}
//通过构造函数传递被代理者
public ProxySubject(Subject obj){
subject = (Subject)obj;
}
//实现接口中定义的方法
@Override
public void request() {
//前
before();
this.subject.request();
//后
after();
}
public void before(){
System.out.println("前");
}
public void after(){
System.out.println("后");
}
}
######################
package com.huateng;
public class 代理模式 {
//RealSubject和ProxySubject实现同一个接口
public static void main(String[] args) {
Subject sub = new ProxySubject(new RealSubject());
sub.request();
}
}