zoukankan      html  css  js  c++  java
  • 观察者模式的架构

    Bean  Manager  View 

    manager负责网络请求,继承 java.util.Observable 

    主要内容:

    public class RequestManger extends Observable {
        private static ConsultListManger mManager;
    
    
        private String TAG = this.getClass().getSimpleName();
    
        private ConsultListManger() {
        }
    
        public synchronized static ConsultListManger getInstance() {
            if (mManager == null) {
                mManager = new RequestManger ();
            }
            return mManager;
        }
    
       //网络请求的方法 public void request() {
        //在网络请求出现结果后调用    
        setChanged();
        notifyObservers(informationListBean);

        如:
        request.setHttpListener(new HttpListener<String>() {
                    @Override
                    public void onSuccess(String s, Response<String> response) {
                        super.onSuccess(s, response);
                            setChanged();
                            notifyObservers(informationListBean);
                        } 
                    }
    
                    @Override
                    public void onFailure(HttpException e, Response<String> response) {
                        super.onFailure(e, response);
                        setChanged();
                        notifyObservers("网络请求失败!");
                    }
                });
    

      

      } }

      

    View是activity或者fragment,需要实现 java.util.Observer,实现Observer的update()方法。

    主要内容:

    public class Fragment extends Fragment implements Observer{

        
        requestManager = RequestManager.getInstance();
        requestManager.addObserver(this);
        requestManager.request();


        ........
    @Override public void update(Observable o, Object arg) {   if (o instanceof RequestManager) {      if (arg instanceof Bean) {      setData(((Bean) arg));    }     }    }

        private void setData(Bean bean){
          //设置UI
        }

        
        @Override
        protected void onDestroy() {
         super.onDestroy();
        requestManager.deleteObserver(this);
        }
    }                
    

    在activity的onDestory()中要删除observe,否则会出现问题。

      

  • 相关阅读:
    第六章类(十一)构造函数4对象初始化器和集合初始化器
    第六章类(十)构造函数3new
    第六章类(九)构造函数2默认构造函数
    Javascript---- 练习八(字符串操作)
    图解CSS3----white-space空白符处理
    图解CSS3----word-break单词断行
    图解CSS3----word-wrap(单词换行)
    图解CSS3----text-overflow(文本溢出属性)
    图解CSS3----vertical-align(文本垂直对齐方式)
    Javascript---- 练习五(函数,事件绑定)
  • 原文地址:https://www.cnblogs.com/IT-lss/p/9525389.html
Copyright © 2011-2022 走看看