静态代理模式
静态代理模式的角色:
抽象角色:声明真实角色和代理角色的接口;
真实角色: 最终要引用的对象
代理角色:持有一个真实角色的引用
一个房东(真实角色),一个中介(代理角色),都能实现卖房子这个动作(接口中的抽象方法)。
但只有房东有房子,它一定能卖房子,但中介必须与房东交互才能卖掉房子(必须持有真实角色的引用)。
1.抽象角色:Subject.java
package proxy;public abstract class Subject{public abstract void request();}
package proxy;public class RealSubject extends Subject{public void request(){System.out.println("From real subject.");}}
package proxy;public class ProxySubject extends Subject{//代理角色内部引用了真实角色private RealSubject realSubject = new RealSubject(); public void request(){//在真实角色操作之前所附加的操作this.preRequest(); //真实角色所完成的事情realSubject.request(); //在真实角色操作之后所附加的操作this.postRequest(); }private void preRequest(){System.out.println("pre request");}private void postRequest(){System.out.println("post request");}}
package proxy;public class Client{public static void main(String[] args){Subject subject = new ProxySubject();subject.request();}}