• 观察者模式的架构


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

      

  • 相关阅读:
    卡特兰数,高精度卡特兰数
    SqlServer表中两条全然同样的记录,怎样删除当中1条
    微信.NET 微信开发 自己主动内容回复 ASP.NET C#代码
    RadHat搭建内网YUM源server
    2014上海全国邀请赛题解 HDOJ 5090-5099
    Enum枚举类|注解Annotation
    Galera 10.0.20 on CentOS 6.6
    CSS布局那点事儿
    利用CSS制作脸书
    《民国枭雄杜月笙》—— 听后总结
  • 原文地址:https://www.cnblogs.com/IT-lss/p/9525389.html
Copyright © 2020-2023  润新知