抽象角色
package com.ygl.proxy;
public abstract class Subject {
public abstract void request();
}
//===================================
代理角色
package com.ygl.proxy;
public class ProxySubject extends Subject{
private RealSubject realSubject;//代理角色内部引用了真实角色
@Override
public void request() {
this.preRequest();
if(null==realSubject){
realSubject=new RealSubject();
}
realSubject.request();//真实角色所完成的事情
this.postRequest();
}
private void postRequest() {
System.out.println("post request");
}
private void preRequest(){
System.out.println("pre request");
}
}
//===================================
真实角色
package com.ygl.proxy;
public class RealSubject extends Subject{
@Override
public void request() {
System.out.println("RealSubject");
}
}
//==============================
测试
package com.ygl.proxy;
public class Client {
public static void main(String[] args) {
Subject subject=new ProxySubject();
subject.request();
}
}