1. 代理中涉及的概念
1)抽象角色
public abstract class Subject { public abstract void reuquest(); }
2)真实角色(对抽象角色的实现,是真正客户端要操作的对象)
public class RealSubject extends Subject { @Override public void reuquest() { System.out.println("from real subject."); } }
3)代理角色(对抽象角色的实现,持有真实较色的一个引用,可以在代理对象中进行附加操作)
public class ProxySubject extends Subject { //代理对象应该拥有一个真实对象的引用 private RealSubject realSubject; @Override public void reuquest() { this.preRequest(); if(null == realSubject){ realSubject = new RealSubject(); } realSubject.reuquest();//真实角色所完成的事情 this.postRequest(); } private void preRequest(){ System.out.println("pre request"); } private void postRequest(){ System.out.println("post request"); } }
2. 定义一个客户端类的对象,实现通过代理类对目标类的操作
public class Client { /** * @param args */ public static void main(String[] args) { Subject subject = new ProxySubject(); subject.reuquest(); } }
以上!