美文网首页Android精选
设计模式知识梳理(7) - 结构型 - 代理模式

设计模式知识梳理(7) - 结构型 - 代理模式

作者: 泽毛 | 来源:发表于2018-11-28 22:11 被阅读56次

    一、基本概念

    1.1 定义

    为其他对象提供一种代理以控制对这个对象的访问。

    1.2 例子

    代理模式

    代理模式的角色分为以下几种:

    • 抽象主题类Subject:声明真实主题与代理的共同接口方法。
    /**
     * 抽象主题类。
     *
     * @author lizejun
     **/
    public abstract class Subject {
    
        /**
         * 业务方法。
         */
        public abstract void visit();
    }
    
    • 真实主题类RealSubject:定义了代理所表示的真实对象,由其执行具体的业务逻辑方法,客户类通过代理类间接地调用真实主题类中定义的方法。
    /**
     * 实现抽象主题的真实主题类。
     *
     * @author lizejun
     **/
    public class RealSubject extends Subject {
    
        @Override
        public void visit() {
            Log.d("RealSubject", "visit()");
        }
    }
    
    • 代理类ProxySubject:该类持有一个对真实主题类RealSubject的引用,在其所实现的接口方法中调用真实主题类中相应的接口方法执行。
    /**
     * 代理类。
     *
     * @author lizejun
     **/
    public class ProxySubject extends Subject {
    
        private Subject mSubject;
    
        public ProxySubject(Subject subject) {
            mSubject = subject;
        }
    
        @Override
        public void visit() {
            mSubject.visit();
        }
    }
    

    1.3 代理模式的使用场景

    当无法或不想直接访问某个对象或访问某个对象存在困难时,可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象 需要 实现相同的接口

    1.4 代理模式优缺点

    优点

    • 协调调用者和被调用者,降低系统的耦合。
    • 起到中介的作用,保护目标对象。

    缺点

    • 需要额外的工作。
    • 在调用者和真实对象之间增加了代理对象,有可能导致请求变慢。

    二、Android 源码

    在之前的文章中,我们已经在源码当中接触过两种代理模式,这里就不再重复说明了,有兴趣的可以看下面这两篇文章:

    三、项目应用

    待补充。

    四、参考文献

    • <<Android 源码设计模式 - 解析与实战>>

    相关文章

      网友评论

        本文标题:设计模式知识梳理(7) - 结构型 - 代理模式

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