如題:今天遇到一個(gè)需求梁剔,在子module中獲取主module中通過(guò)網(wǎng)絡(luò)接口異步返回的數(shù)據(jù)?嗯舞蔽。荣病。繞了一下午把自己繞進(jìn)去了,簡(jiǎn)單來(lái)說(shuō)喷鸽,就兩個(gè)回調(diào)完事众雷。一個(gè)request,一個(gè)response做祝。但是胡思亂想了一下午砾省,很是尷尬,廢話(huà)不多說(shuō)混槐,咱直接上代碼编兄。
首先一個(gè)request接口:
public interface IRequest {
public void request(IResponse response);
}
然后一個(gè)response接口
public interface IResponse {
void response(String result);
}
一個(gè)通信管理
public class BridgeManager {
private IRequest request;
public void registerCallback(IRequest request) {
this.request = request;
}
public IRequest getRequest() {
return request;
}
public void setRequest(IRequest request) {
this.request = request;
}
}
為了方便擴(kuò)展,我們?cè)賮?lái)一個(gè)通信管理的list的管理容器
public class BrigeListManager {
private static class SingletonHolder {
private static final BrigeListManager sInstance = new BrigeListManager();
}
public static BrigeListManager getInstance() {
return SingletonHolder.sInstance;
}
private BridgeManager bridgeManager;
public BridgeManager getBridgeManager() {
return bridgeManager;
}
public void setBridgeManager(BridgeManager bridgeManager) {
this.bridgeManager = bridgeManager;
}
}
我們?cè)賮?lái)寫(xiě)一個(gè)主工程模擬網(wǎng)絡(luò)請(qǐng)求的東東
public class MainModuleImpl extends BridgeManager{
public MainModuleImpl(){
registerCallback(new IRequest() {
@Override
public void request(IResponse response) {
try {
Thread.sleep(3000);
System.out.print("耗時(shí)任務(wù)執(zhí)行完畢");
response.response("給子module返回結(jié)果");
}catch (Exception e){
}
}
});
}
}
然后隨便在寫(xiě)一個(gè)主工程中初始化的地方,具體情況具體考察,我只模擬一下下
public class MainModule {
MainModule(){
BrigeListManager.getInstance().setBridgeManager(new MainModuleImpl());
}
}
完事了,我們模擬一下子module中如何獲取
public class Test {
public static void main(String args[]) {
MainModule mainModule=new MainModule();
IResponse response = new IResponse() {
@Override
public void response(String result) {
System.out.print(result);
}
};
BrigeListManager.getInstance().getBridgeManager().getRequest().request(response);
}
}
end
嗯稽煤,津滞,纺腊,美滋滋吧,雖說(shuō)代碼不難,但是不知道為什么,卻讓我想的很是難受铅祸,惱火,可能年紀(jì)大了合武,??