Android设计模式

Android设计模式-11-观察者模式

2018-06-09  本文已影响42人  今阳说

1. 定义

定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新

2. 使用场景:

3. 优缺点

4. Android源码中的使用

5. 实例演示

以程序员经常会看的极客头条的订阅为例。
下面的观察者和被观察者直接继承 JDK中内置的Observer,Observable:

  1. 创建观察者,即程序员类
    //观察者,程序员
    class Coder implements Observer {
        public String name;

        public Coder(String name) {
            this.name = name;
        }

        @Override
        public void update(Observable o, Object arg) {
            LjyLogUtil.i("hi, " + name + ", 极客头条有文章更新了,更新内容:" + arg);
        }

        @Override
        public String toString() {
            return "码农:" + name;
        }
    }
  1. 创建被观察者,即文章网站
    //极客头条,被观察者
    class GeekNews extends Observable {
        public void postNews(String content) {
            setChanged();
            notifyObservers(content);
        }
    }
  1. 创建观察者和被观察者对象,进行订阅
private void methodObserverPattern() {
        //1.创建被观察者
        GeekNews geekNews = new GeekNews();
        //2.创建观察者
        Coder coder1 = new Coder("马画藤");
        Coder coder2 = new Coder("云马");
        Coder coder3 = new Coder("王剑灵");
        //订阅/注册
        geekNews.addObserver(coder1);
        geekNews.addObserver(coder2);
        geekNews.addObserver(coder3);
        //发布消息
        geekNews.postNews("最新Android文章-RxJava详解");
        geekNews.postNews("最新iOS文章-UIView详解");
    }

这里只是简单的演示,要想深入了解观察者模式,可以了解一下EventBus,RxJava等一些开源框架,其中对观察者模式有很明显的体现

上一篇 下一篇

猜你喜欢

热点阅读