設計模式一:觀察者模式的自我實現

引言:首先對於觀察者模式,在前面一篇轉載的文章裏面對其進行了很深刻的講解,我自認爲沒人家理解的好,寫的好,所以直接就轉載咯,寫這篇博客僅僅只是見證我的成長,還是這個項目,還是這個版本,前天都上線了,然後發現我做的某塊功能還可以進行優化,然後趁着在這次需求評審完,排期還沒定的情況下,屁顛屁顛的對我之前做的地方進行優化。


使用的是觀察者模式。

什麼原理的就不寫了,前面都有。

BaseHelper.java                  成爲觀察者的接口,若是想成爲觀察,必須的實現該接口 

UserHelper.java                   用來通知的,通知調用了該方法的class ,

OrderSenddingVitualActivity.java    實現接口  成爲一個觀察者



BaseHelper.java

[java] view plaincopy
  1. /** 
  2.  * 處理類抽象基類 
  3.  * @author xiayong 
  4.  * 
  5.  */  
  6. public abstract class BaseHelper {  
  7.       
  8.     protected IServiceDataReceived mIServiceDataReceived;  
  9.       
  10.     public void setServiceDataListener(IServiceDataReceived _mIServiceDataReceived){  
  11.           
  12.         mIServiceDataReceived = _mIServiceDataReceived;  
  13.     }  
  14.       
  15.     public interface  IServiceDataReceived{  
  16.         public void onServiceDataReceived(CommonBean bean);  
  17.     }  
  18. }  


UserHelper.java     

[java] view plaincopy
  1. /** 
  2.  * 訂單管理幫助類 
  3.  */  
  4. public class OrderHelper extends BaseHelper {  
  5.   //重新下單請求服務器(只在OrderSendingVirtualActivity取消訂單訪問服務器的時候用到)  
  6.     public void handReOrder(Activity activity, String orderid) {  
  7.         Map<Object, Object> paramMap = new HashMap<Object, Object>();  
  8.         paramMap.put("orderid", orderid);  
  9.         CommonPostTask cancelTask =  
  10.                 new CommonPostTask(activity, APPConfig.URLS.URL_RE_ORDER, paramMap, new CommonPostTask.ResultCallBack() {  
  11.                     @Override  
  12.                     public void ComTaskResult(CommonBean bean) {  
  13.                         if (mIServiceDataReceived != null) {//在這裏通知  
  14.                             mIServiceDataReceived.onServiceDataReceived(bean);  
  15.                         }  
  16.   
  17.                     }  
  18.                 });  
  19.         cancelTask.execute();  
  20.   
  21.     }  
  22. }  


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();
		}

	}

}


就這些了,一個重新下單的過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章