代理模式

代理模式

静态代理

  • 当服务对象和代理对象实现了统一接口

  • 那么服务对象就可以利用代理对象实现自己无法实现的功能

    class StaticAgent {
        public static void main(String[] args) {
            new WeddingCompany(new Person()).happyMarry();
        }
    }
    
    
    // 这里我们定义一个结婚的接口
    interface Marry{
        void happyMarry();
    }
    
    // 这里我们定义一个Person类实现结婚的接口
    class Person implements Marry{
        @Override
        public void happyMarry(){
            System.out.println("结婚啦");
        }
    }
    
    // 这里我们定义一个婚庆公司的类实现结婚的接口
    class WeddingCompany implements Marry{
        private Marry target;
    
        public WeddingCompany(Marry target){
            this.target = target;
        }
    
        @Override
        public void happyMarry(){
            before();
            target.happyMarry();
            after();
        }
        public void before(){
            System.out.println("婚礼前布置会场");
        }
        public void after(){
            System.out.println("婚礼后收拾场地");
        }
    }
    
    • 静态代理婚庆公司对象实现了Person类对于婚礼前后的需求,但是不需要Person自己关心如何实现,这样大大提高了代码的复用性

// TODO 动态代理

原文地址:https://www.cnblogs.com/rainful/p/14905350.html