??代理模式(Proxy Pattern),指调用者通过调用代理对象来访问真实对象,在真实对象访问之前或者之后加入对应的逻辑,或者根据其他规则控制是否使用真实对象。代理对象需要和真实对象建立代理关系。

/**
 * 抽象对象
 *
 * @author zt1994 2019/3/2 16:25
 */
public interface SayHello {
    void sayHelloWorld();
}
/**
 * 真实对象
 *
 * @author zt1994 2019/3/2 16:27
 */
public class SayHelloImpl implements SayHello {
    @Override
    public void sayHelloWorld() {
        System.out.println("Hello World!");
    }
}
/**
 * 代理对象
 *
 * @author zt1994 2019/3/2 16:28
 */
public class SayHelloProxy implements SayHello {
    private SayHello sayHello;
    public SayHelloProxy(SayHello sayHello) {
        this.sayHello = sayHello;
    }
    @Override
    public void sayHelloWorld() {
        System.out.println("调用sayHello之前的处理");
        sayHello.sayHelloWorld();
        System.out.println("调用sayHello之后的处理");
    }
}
/**
 * 测试静态代理
 *
 * @author zt1994 2019/3/2 16:30
 */
public class staticProxyTest {
    /**
     * 测试静态代理
     */
    @Test
    public void testStaticProxy() {
        SayHelloImpl sayHello = new SayHelloImpl();
        sayHello.sayHelloWorld();
        SayHelloProxy sayHelloProxy = new SayHelloProxy(sayHello);
        sayHelloProxy.sayHelloWorld();
    }
}
测试结果:
Hello World!
调用sayHello之前的处理
Hello World!
调用sayHello之后的处理
源码地址:https://github.com/zt19994/designPattern
原文:https://www.cnblogs.com/zt19994/p/10461812.html