您的位置:首页 > 移动开发 > Android开发

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

2012-10-25 09:47 141 查看
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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: