引言:首先對於觀察者模式,在前面一篇轉載的文章裏面對其進行了很深刻的講解,我自認爲沒人家理解的好,寫的好,所以直接就轉載咯,寫這篇博客僅僅只是見證我的成長,還是這個項目,還是這個版本,前天都上線了,然後發現我做的某塊功能還可以進行優化,然後趁着在這次需求評審完,排期還沒定的情況下,屁顛屁顛的對我之前做的地方進行優化。
使用的是觀察者模式。
什麼原理的就不寫了,前面都有。
BaseHelper.java 成爲觀察者的接口,若是想成爲觀察,必須的實現該接口
UserHelper.java 用來通知的,通知調用了該方法的class ,
OrderSenddingVitualActivity.java 實現接口 成爲一個觀察者
BaseHelper.java
- /**
- * 處理類抽象基類
- * @author xiayong
- *
- */
- public abstract class BaseHelper {
- protected IServiceDataReceived mIServiceDataReceived;
- public void setServiceDataListener(IServiceDataReceived _mIServiceDataReceived){
- mIServiceDataReceived = _mIServiceDataReceived;
- }
- public interface IServiceDataReceived{
- public void onServiceDataReceived(CommonBean bean);
- }
- }
UserHelper.java
- /**
- * 訂單管理幫助類
- */
- public class OrderHelper extends BaseHelper {
- //重新下單請求服務器(只在OrderSendingVirtualActivity取消訂單訪問服務器的時候用到)
- public void handReOrder(Activity activity, String orderid) {
- Map<Object, Object> paramMap = new HashMap<Object, Object>();
- paramMap.put("orderid", orderid);
- CommonPostTask cancelTask =
- new CommonPostTask(activity, APPConfig.URLS.URL_RE_ORDER, paramMap, new CommonPostTask.ResultCallBack() {
- @Override
- public void ComTaskResult(CommonBean bean) {
- if (mIServiceDataReceived != null) {//在這裏通知
- mIServiceDataReceived.onServiceDataReceived(bean);
- }
- }
- });
- cancelTask.execute();
- }
- }
OrderSenddingVitualActivity.java
public class OrderSendingVirtualActivity extends BaseActivity implements IServiceDataReceived {
private OrderHelper orderHelper;
//聲明
@Override
protected void initView() {
orderHelper = (OrderHelper) HelperFactory.createHelper("OrderHelper");
}
//註冊
@Override
protected void initEvent() {
orderHelper.setServiceDataListener(this);
}
//實現接口的方法
public void onServiceDataReceived(CommonBean bean) {
if (bean.urlEquals(APPConfig.URLS.URL_RE_ORDER)) {
handleReOrder(bean);
}
}
//處理重新下單
private void handleReOrder(CommonBean bean){
//加一個條件判斷,若是沒有獲得服務器的數據 則返回一個false
try {
// 成功
if (!bean.isNull() && bean.getCode() == 0) {
//請求成功
JSONObject json = (JSONObject) bean.getData().nextValue();
orderDetailsBean = new OrderDetailsBean(json);
startIntentReOder();//重新下單
return;
}
// 網絡良好,業務異常
if (!bean.isNull() && bean.getCode() != 0) {
CommonTools.showcustomAlert(OrderSendingVirtualActivity.this, getResources().getString(R.string.ordersend_error), Toast.LENGTH_LONG);
//跳到首頁
Intent intent = new Intent(OrderSendingVirtualActivity.this, FragmentTabPager.class);
this.startActivity(intent);
return;
}
// 網絡斷掉
if (bean.isNull()) {
CommonTools.showcustomAlert(OrderSendingVirtualActivity.this, getResources().getString(R.string.fial_network));
return;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
就這些了,一個重新下單的過程。