public interface Subject { void sayHello();
}
public class Friend implements Subject { @Override public void sayHello() { System.out.println("hello"); } }
public class ProxySubject implements Subject{ private Subject subject; public ProxySubject(Subject subject) { this.subject = subject; } @Override public void sayHello() { this.beforeSayHello(); this.subject.sayHello(); this.afterSayHello(); } public void beforeSayHello(){ System.out.println("say Hello before"); } public void afterSayHello(){ System.out.println("say Hello end"); } }
public class TestAgent { public static void main(String[] args) { Subject subject=new Friend(); ProxySubject proxySubject=new ProxySubject(subject); proxySubject.sayHello(); } }