My logo
Published on

chain of responsibility 责任链模式

懒加载:hibernate、mybatis,都可以实现懒加载,这个大家应该都知道了,其实也是基于动态代理思想实现的,对刚查询出来的对象做一个代理。然后去调用getX()方法的时候,再实际执行sql查询出来关联的数据。

package wang.jinggo.basics.zhss.proxy;

/**
 * 代理模式
 * @author: wangyj
 * @create: 2021-10-23
 * @version: 1.0.0
 **/
public class ProxyPatternDemo {

    public static void main(String[] args) {
        Subject subject = new ConcreteSubject();
        Subject proxy = new Proxy(subject);
        proxy.request();
    }

    public interface Subject {

        void request();

    }

    public static class ConcreteSubject implements Subject {

        public void request() {
            System.out.println("执行请求");
        }

    }

    public static class Proxy implements Subject {

        private Subject subject;

        public Proxy(Subject subject) {
            this.subject = subject;
        }

        public void request() {
            System.out.println("执行额外的条件判断,拷贝是否要调用subject的request()方法");
            boolean invoke = true;
            if(invoke) {
                subject.request();
            }
        }

    }

}