Android 代理模式讲解
来源:互联网 发布:js e.target.result 编辑:程序博客网 时间:2024/04/30 23:02
1.1代理模式介绍
代理模式也称为委托模式
1.2代理模式的定义
为其他对象提供一种代理以控制改对这个对象的访问
1.3代理对象的使用场景
当无法或不想直接访问某一个对象的时候或者直接访问一个对象存在困难的时候,可以通过一个代理对象来间接访问,以保证客户端的透明性,委托对象与代理对象需要实现相同的接口
1.4代理模式的简单UML类图
具体代码如下
package com.android.proxy;public interface Subject {void visit();}
package com.android.proxy;public class SubjectNative implements Subject{public void visit() {// TODO Auto-generated method stubSystem.out.println("Welcome visit");}}
package com.android.proxy;public class SubjectProxy implements Subject{private SubjectNative subjectNative;//持有真正主题的使用public SubjectProxy(SubjectNative subjectNative){this.subjectNative = subjectNative;}public void visit() {// TODO Auto-generated method stubsubjectNative.visit();}}
package com.android.proxy;public class Client {public static void main(String[] args) { //构造一个真实的主题SubjectNative subjectNative = new SubjectNative(); //通过真实的主题创建一个代理主题SubjectProxy subjectProxy = new SubjectProxy(subjectNative); //调用代理的相关方法subjectProxy.visit();}}
1.5 接下来我们分析下Android 源代码中使用的代理模式
我们发现ActivityManagerNative 和 ActivityManagerProxy都继承IActivityManager接口,而ActivityManagerService 继承于ActivityManagerNative,我们通过调用ActivityManagerProxy来引用ActivityManagerService.
备注:理解注意点
1)ActivityManagerNative 和 ActivityManagerProxy都实现了IActivityManager接口。
2)ActivityManagerNative由其子类ActivityManagerService具体实现。
3)ActivityManagerService是系统级Service并且运行与独立进程空间中,可以通过ServiceManager来获取它,而ActivityManagerProxy也运行在自己所处的进程中,两者不相同,因此ActivityManagerProxy和ActivityManagerService之间通讯必须通过跨进程进行通信。
0 0
- Android 代理模式讲解
- Proxy--Android的设计模式之代理模式的讲解
- 代理模式详细讲解
- IOS 代理模式初学讲解
- android 代理模式 动态代理
- java Proxy代理模式简单讲解
- 代理模式原理及实例讲解
- 代理模式原理及实例讲解
- android mvp模式讲解
- 代理模式与Android
- [Android] 代理模式
- Android中的代理模式
- android 代理模式
- Android动态代理模式
- Android的代理模式
- Android中代理模式
- Android设计模式------代理模式
- Android设计模式-代理模式
- 排序算法性能分析
- ios应用数据存储方式(XML属性列表-plist)
- phpcms面包屑导航去掉最后分隔符。
- Axis1.4 操作文档
- linux下交叉编译ffmpeg,并加入H264编码支持
- Android 代理模式讲解
- php环境配置以及笔记
- 浅析深究什么是SOA?
- 欢迎使用CSDN-markdown编辑器
- 大数据存取的选择:行存储还是列存储?
- SQL Server对Xml字段的操作
- JS中的this变量的使用介绍
- JavaScript获取对象属性和设置对象属性总计
- 配置数据源