美文网首页
八、静态代理

八、静态代理

作者: 你的益达233 | 来源:发表于2020-01-25 21:10 被阅读0次

    定义:给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用。
    代理对象:起到中介作用

    好处:新增额外功能不用改变真实对象类,比如真实对象仅仅买了个礼物,现在打算新增包装礼物功能,就可以用静态代理方式,创建代理对象,里面封装真实对象买礼物,额外做包装礼物功能

    缺点:

    1. 由于在客户端(使用时)和真实主题之间增加了代理对象,因此会造成请求的处理速度变慢
    2. 1个静态代理只服务1种类型的目标对象,如果目标对象较多情况下,若采用静态代理,则会出现静态代理对象量多,代码量大,从而导致代码复杂问题

    操作原理:创建抽象对象接口,即真实对象和代理对象都要实现的接口,然后在代理对象实现和真实对象实现一样的方法中,引用或者创建真实对象,调用真实对象的方法,然后代理对象额外做一些操作。

    示例代码:
    步骤1、创建抽象对象接口(Subject):声明你(真实对象)需要让代购(代理对象)帮忙做的事(买Mac)

    interface Subject {
        void buyGift();
    }
    

    步骤2、创建真实对象

    class RealSubject implements Subject {
        @Override
        public void buyGift() {
            System.out.println("我要买一份礼物");
        }
    }
    

    步骤3、创建代理对象,并通过代理类创建真实对象示例访问其方法,再额外加功能

    class ProxySubject implements Subject {
        @Override
        public void buyGift() {
            RealSubject realSubject = new RealSubject();
            realSubject.buyGift();
            //额外操作
            System.out.println("礼物进行包装");
        }
    }
    

    步骤4、开始使用

    public class StaticProxyDemo {
    
        public static void main(String[] args){
            Subject subject = new ProxySubject();
            subject.buyGift();
        }
    
    }
    

    参考:https://www.jianshu.com/p/a8aa6851e09e

    相关文章

      网友评论

          本文标题:八、静态代理

          本文链接:https://www.haomeiwen.com/subject/ixorthtx.html