TShopping
標題:
理解Android系統的進程間通信原理(一)----RPC中的代理模式
[打印本頁]
作者:
woff
時間:
2014-11-24 23:56
標題:
理解Android系統的進程間通信原理(一)----RPC中的代理模式
Android系統中的進程間通信是通過一個輕量級的RPC(Remote Procedure Call遠程進程調用)和AIDL(Android Interface Definination Language)規範來生成兩個進程之間可以相互訪問的代碼。其中RPC是以接口方式來實現,客戶端與被調用實現之間是通過代理模式來實現的,這些又是以JAVA的RMI和代理模式為理論基礎的,若要靈活掌握這個輕量級的解決方案,有必要重新理順這些基礎知識的,這裡我們先了解代理模式的相關基礎,
有關代理模式的知識,可以用下面這個思維導圖來表示:
1.png
(233.26 KB, 下載次數: 9)
下載附件
保存到相冊
2014-11-24 23:55 上傳
這里以一個代碼實例來說明實際運用:
1、抽像類Role代碼
package com.magc.proxy;
/**
* @author magc
*代理角色和真實角色的共同抽像類
*/
public abstract class Role {
// 作為代理角色和真實角色的共同接口,方便代理角色對外代替真實角色來提供服務
public abstract void service(String user_id);
}
複製代碼
2、真實角色類RealRole代碼
package com.magc.proxy;
/**
* @author magc
*真實角色類
*對外是不可訪問
*
*/
public class RealRole extends Role {
/* (non-Javadoc)
* @see com.magc.proxy.Role#service()
*提供服務
*/
@Override
public void service(String user_id) {
System.out.println( " 真實角色為你服務…… " );
}
// 驗證用戶身份
public boolean CheckUser(String user_id)
{
return true ;
}
}
複製代碼
3、代理類ProxyRole代碼:
package com.magc.proxy;
/**
* @author magc
*代理角色類
*對客戶端開發其接口
*內部可以直接引用真實角色實例,將客戶端的請求轉給真實角色實例
*對轉發請求的前或者後面可以增加一些額外操作
*/
public class ProxyRole extends Role {
private RealRole realrole = null ;
/* (non-Javadoc)
* @see com.magc.proxy.Role#service()
*/
@Override
public void service(String user_id ) {
System.out.println( " 代理角色為你服務…… " );
// 需要時才去創建真實角色實例
realrole = new RealRole();
// 增加額外操作:驗證身份
System.out.println( " 驗證身份…… " );
if ( ! realrole.CheckUser(user_id))
return ;
System.out.println( " 去找真實角色實例幫忙處理事務…… " );
realrole.service( " magc " );
System.out.println( " 謝謝光臨…… " );
}
}
複製代碼
4、測試類RoleTest類代碼
package com.magc.proxy;
/**
* @author magc
*代理模式測試類
*作為客戶端去請求調用代理類的接口。
*客戶端只能訪問代理類,而不能訪問真實角色類
*/
public class ProxyTest {
/**
* @param args
*/
public static void main(String[] args) {
ProxyRole proxy = new ProxyRole();
proxy.service( " magc " );
}
}
複製代碼
運行測試類,控制台輸出結果為:
2.png
(14.8 KB, 下載次數: 7)
下載附件
保存到相冊
2014-11-24 23:55 上傳
由於時間倉促,錯誤難免,希望能給大家有所啟示,也算是在這裡拋磚引玉了,呵呵
轉帖
http://www.cnblogs.com/mandroid/archive/2011/02/24/1963357.html
歡迎光臨 TShopping (http://www.tshopping.com.tw/)
Powered by Discuz! X3.2