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,否则会出现问题。

      

  • 相关阅读:
    $python日期和时间的处理
    $python生成器
    $思维导图——numpy基本知识
    $python用装饰器实现一个计时器
    $ MySQL-python数据库模块用法
    CentOS 7.2下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1
    Nginx、Apache工作原理及Nginx为何比Apache高效
    Apache的三种工作模式及相关配置
    ThinkPHP框架
    session与cookie的区别是什么?如果客户端禁用了cookie功能,将会对session有什么影响?
  • 原文地址:https://www.cnblogs.com/IT-lss/p/9525389.html
Copyright © 2011-2022 走看看