美文网首页
代理模式之Binder

代理模式之Binder

作者: wa11e | 来源:发表于2017-11-03 10:44 被阅读0次

概念

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

举个栗子

小黄想要追求小红,但是不认识小红,刚好他的朋友小李认识小红,小黄通过小李去追求小红,这个过程就是代理模式.

来看看UML图.

image

先定义一个追求接口

public interface request {
    void Flowers();
    
    void Babe();
    
    void Chocolat();
}

让小黄和小李都实现它,

//小黄,追求者
public class Pursuit implements request {
    private Girl girl;
    public Pursuit(Girl girl){
        this.girl = girl;
    }

    @Override
    public void Flowers() {
        System.out.println(girl.name + "送花");
    }

    @Override
    public void Babe() {
        System.out.println(girl.name + "送芭比");
    }

    @Override
    public void Chocolat() {
        System.out.println(girl.name + "送巧克力");
    }

}

//小李,代理者
public class Proxy implements request {
    private Pursuit pursuit;
    
    public Proxy(Girl girl){
        //代理
        pursuit = new Pursuit(girl);
    }
    ...request接口
}
//Girl类无所谓,有个名字就成.

Android中的代理模式.

Binder机制

众所周知,Binder存在的原因是为了进程间通讯.我们从进程A去访问进程B时,需要通过Binder机制去访问.

Binder是标准的C/S模式.那么可以这么理解,有两个进程ClientServer,,谁请求谁就是进程Client,谁被请求谁就是进程Server.但是我们并没有权限去自己访问Server,而是通过Binder去代替我们去请求Server,然后返回Server的代理,我们通过这个代理去操作,这样通过代理的方式无疑确保了系统的安全性.

否则以Android剪切板为栗,如果不是通过代理去访问,而是自己拥有访问的权限,我们在自己的APP中去修改剪切板,随之改变的,是整个系统,所有APP的剪切板都会改变,无疑这样是不允许的.而通过代理,就算你改变了这个APP中的剪切板,但是并不影响其他的APP.

比如说,我现在要请求服务中的一个add方法,我需要通过Binder去请求SM(ServiceManager),然后返回这个add方法的代理.看图说话.

image
我们可以非常清晰地看到这个代理的全过程.

结语

有错请指出,谢谢.

学无止境.

相关文章

  • 代理模式之Binder

    概念 为其它对象提供一种代理以控制对这个对象的访问 举个栗子 小黄想要追求小红,但是不认识小红,刚好他的朋友小李认...

  • 设计模式汇总(ongoing)

    单例模式 工厂方法模式 抽象工厂模式 模板方法模式 建造者模式 代理模式Binder 通信retrofit 使用动...

  • 插件开发之360 DroidPlugin源码分析(三)Binde

    Hook机制中Binder代理类关系图 Hook机制中Binder代理时序图 MyServiceManager S...

  • 浅析Binder(五)——ServiceManager代理对象的

    大家都知道Binder机制主要由ServiceManager,Binder实体对象,Binder代理对象三个组件,...

  • 代理模式

    设计模式之代理模式 什么是代理模式? 指的事代理对象为其他对象提供代理以控制对被...

  • Java设计模式之代理模式

    Java设计模式之代理模式 代理模式 静态代理 动态代理 为什么需要代理 通过代理,我们能够不用知道委托人是谁,而...

  • 设计模式之代理模式

    设计模式之代理模式 10分钟看懂动态代理设计模式(升级篇)-对这篇动态代理模式的思路整理 仿JDK实现动态代理逻辑...

  • Java代理模式之JDK动态代理

    了解什么是动态代理模式,可参考Java设计模式之代理模式 简介 JDK动态代理是java.lang.reflect...

  • 设计模式之代理模式

    设计模式之代理模式 1.代理模式的定义 为其他对象提供一种代理以控制对这个对象的访问. 2.代理模式的使用场景 当...

  • java设计模式之代理模式(静态代理)

      今天给大家分享的是java设计模式之代理模式中的静态代理模式,动态代理模式将在后面文章中给出。如有不足,敬请指...

网友评论

      本文标题:代理模式之Binder

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