接口可以理解爲一個比較特殊的“類”,我們可以使用接口類型的變量調用接口中定義的方法,那麼我們可以使用接口對上行請求和下行消息的方法進行封裝,這樣就只能調用接口中定義的方法。
我們可以使用回調接口對數據進行傳輸,把返回的數據返回到合適的位置進行處理。
上行請求
類圖
RequestManager類中實現IInvoke接口,接收上行的請求。同時此類也接收發送請求成功後返回的數據(方法onCallback()),我們通過ICallback回調接口把返回的數據發送到實現ICallback的地方。
代碼
// 上行請求接口
public interface IInvoke {
void requestMethod();
}
// 上行請求接口實現類
public class RequestManager implements IInvoke {
// 聲明一個下行回調的變量
private ICallback callback = null;
// 在構造方法中給下行回調變量賦值
public RequestManager(ICallback back) {
callback = back;
}
@Override
public void requestMethod() {
// TODO 處理上行請求
}
// 接收請求發送成功後返回的數據
private void onCallback() {
// 把接收到的數據通過回調接口發送出去
if (callback != null) {
callback.callbackMethod();
}
}
}
下行回調
類圖
CallbackManager類實現了ICallback接口,在此類中通過request()方法來調用上行請求接口,也通過實現callbackMethod()回調方法來處理請求成功後返回的數據。
代碼
// 下行回調接口
public interface ICallback {
void callbackMethod();
}
// 下行回調接口實現類
public class CallbackManager implements ICallback {
// 聲明一個上行請求的變量
private IInvoke invoke = null;
public CallbackManager() {
// 實例化了IInvoke的變量,同時也實例化了ICallback的變量。
invoke = new RequestManager(this);
}
// 調用上行請求的方法
public void request() {
if (invoke != null) {
invoke.requestMethod();
}
}
// 回調方法
@Override
public void callbackMethod() {
// TODO 處理回調的數據
}
}