public abstract class Subject { abstract public void request(); }
public class RealSubject extends Subject { public void request() { System.out.println("From real subject"); } }
public class ProxySubject extends Subject { private RealSubject realSubject; public ProxySubject() { realSubject = new RealSubject(); } public void request() { preRequest(); realSubject.request(); //输出一次 realSubject.request(); //输出二次 postRequest(); } public void preRequest() { System.out.print("before request"); } public void postRequest() { System.out.println("after request"); } }
public class Client { public static void main(String[] args) { Subject subject = new ProxySubject(); subject.request(); } }
输出:
before requestFrom real subject
From real subject
after request
有个疑问:代理类里面输出两次才能打出真实类的一句语句,很怪,怪怪怪