理解Android的AIDL原理之代理模式

  Android系统中的AIDL是以JAVA的RMI和代理模式为理论基础的,若要灵活掌握AIDL,有必要重新理顺这些基础知识的,这里我们先了解代理模式的相关基础,
有关代理模式的知识,可以用下面这个思维导图来表示:


这里以一个代码实例来说明实际运用:
1、抽象类Role代码
 1 package com.magc.proxy;
 2
 3 /**
 4  * @author magc
 5  *代理角色和真实角色的共同抽象类
 6  */
 7 public abstract class Role {
 8    
 9     //作为代理角色和真实角色的共同接口,方便代理角色对外代替真实角色来提供服务
10     public abstract void service(String user_id);
11
12 }
2、真实角色类RealRole代码
 1 package com.magc.proxy;
 2
 3 /**
 4  * @author magc
 5  * 真实角色类
 6  * 对外是不可访问
 7  *
 8  */
 9 public class RealRole extends Role {
10
11     /* (non-Javadoc)
12      * @see com.magc.proxy.Role#service()
13      * 提供服务
14      */
15     @Override
16     public void service(String user_id) {
17         System.out.println("真实角色为你服务……");
18     }
19     //验证用户身份
20     public boolean CheckUser(String user_id)
21     {
22         return true;
23     }
24
25 }
3、代理类ProxyRole代码:
 1 package com.magc.proxy;
 2
 3 /**
 4  * @author magc
 5  *    代理角色类
 6  *    对客户端开发其接口
 7  *    内部可以直接引用真实角色实例,将客户端的请求转给真实角色实例
 8  *    对转发请求的前或者后面可以增加一些额外操作
 9  */
10 public class ProxyRole extends Role {
11     private RealRole realrole = null;
12
13     /* (non-Javadoc)
14      * @see com.magc.proxy.Role#service()
15      */
16     @Override
17     public void service(String user_id) {
18         System.out.println("代理角色为你服务……");
19         //需要时才去创建真实角色实例
20         realrole = new RealRole();
21         //增加额外操作:验证身份
22         System.out.println("验证身份……");
23         if(!realrole.CheckUser(user_id))
24             return;
25         System.out.println("去找真实角色实例帮忙处理事务……");
26         realrole.service("magc");
27        
28         System.out.println("谢谢光临……");
29     }
30
31 }
4、测试类RoleTest类代码
 1 package com.magc.proxy;
 2
 3 /**
 4  * @author magc
 5  *    代理模式测试类
 6  *    作为客户端去请求调用代理类的接口。
 7  *    客户端只能访问代理类,而不能访问真实角色类
 8  */
 9 public class ProxyTest {
10
11     /**
12      * @param args
13      */
14     public static void main(String[] args) {
15
16         ProxyRole proxy = new ProxyRole();
17         proxy.service("magc");
18     }
19
20 }
运行测试类,控制台输出结果为:http://www.189works.com/article-12262-1.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值