美文网首页
Java-设计模式-观察者模式

Java-设计模式-观察者模式

作者: lioilwin | 来源:发表于2017-08-27 16:49 被阅读8次

一.介绍

观察者模式Observer(又称为发布publish-订阅Subscribe模式、模型-视图模式、源-收听者模式或从属者模式)是软件设计模式的一种!
    
完美将观察者和被观察对象分离,定义了对象间的一对多依赖关系,
一个对象(被观察者)状态发生变化时, 所有对象(观察者)都得到通知并自动刷新! 
例如UI可作为观察者, 业务数据是被观察者,数据发生变化, 通知UI更新。

实现观察者模式时要注意,观察者和被观察对象之间互动关系不能体现成类之间直接调用,
否则就将使观察者和被观察对象之间紧密的耦合起来,从根本上违反面向对象的设计原则。
无论是观察者“观察”观察对象,还是被观察者将自己的改变“通知”观察者,都不应该直接调用!

面向对象设计一个原则:一个对象(类)只做一件事情,不管其它!
观察者模式在模块之间划定了清晰界限,提高了应用程序的可维护性和重用性。

二.使用

java标准已经有:观察者接口Observer,被观察者抽象类Observable
所以Java使用观察者模式很方便快捷!

1.添加观察者(注册/订阅)


void 添加观察者(){
    Observable o = new 被观察者();
    o.addObserver(new 观察者A());
    o.addObserver(new 观察者B());
}

2.观察者


public class 观察者A implements Observer {
    // 被观察者改变了,通知观察者A
    @Override
    public void update(Observable o, Object arg) {
    }
}

public class 观察者B implements Observer {
    // 被观察者改变了,通知观察者B
    @Override
    public void update(Observable o, Object arg) {
    }
}

3.被观察者


public class 被观察者 extends Observable {
    // Observable.addObserver()添加观察者,保存了所有观察者
    
    void 被观察者改变了(){     
        setChanged();
        // 循环遍历所有观察者对象,调用update(...),通知所有观察者        
        notifyObservers();
    }
}

简书: http://www.jianshu.com/p/1e4bf0b7f744
CSDN博客: http://blog.csdn.net/qq_32115439/article/details/72792614
GitHub博客:http://lioil.win/2017/05/28/Observer_Pattern.html
Coding博客:http://c.lioil.win/2017/02/28/Observer_Pattern.html

相关文章

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

  • Java-设计模式-观察者模式

    一.介绍 二.使用 1.添加观察者(注册/订阅) 2.观察者 3.被观察者 简书: http://www.jian...

  • Java-设计模式-观察者模式

    观察者模式原理 Internet气象站项目,普通的OO设计方案有问题。 Internet气象站项目: 提供温度、气...

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • RxJava设计模式与原理

    标准观察者设计模式 RxJava是一种特殊的观察者模式,首先我们先来看标准的观察者设计模式。在标准观察者模式中,存...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • Guava源码分析——EventBus

    EventBus的设计理念是基于观察者模式的,可以参考设计模式(1)—观察者模式先来了解该设计模式。 1、程序示例...

  • 设计模式之观察者模式

    设计模式之观察者模式 本篇是设计模式系列博客的第四篇,本篇主要学习设计模式中的第二个行为型模式---观察者模式。 ...

网友评论

      本文标题:Java-设计模式-观察者模式

      本文链接:https://www.haomeiwen.com/subject/hffidxtx.html