zoukankan      html  css  js  c++  java
  • .Net 观察者模式(Observer)

    目录

    1. 定义
    2. UML
    3. 参与者
    4. 示例

    定义:

    定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

    UML:

    参与者:

    主题(Subject)角色:

    主题角色把所有对观察考对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。主题提供一个接口,可以增加和删除观察者对象,主题角色又叫做被观察者(Observable)角色。

    具体主题(ConcreteSubject)角色:

    实现主题这个角色接口的具体类,将有关状态存入具体现察者对象;在具体主题的内部状态改变时,给所有登记过的观察者发出通知。具体主题角色又叫做具体被观察者角色(Concrete Observable)。

    观察者(Observer)角色:

    为所有的具体观察者定义一个接口,在得到主题的通知时更新自己。这个接口叫做更新接口。抽象观察者角色一般用一个抽象类或者一个接口实现。在这个示意性的实现中,更新接口只包含一个方法(即Update()方法),这个方法叫做更新方法。

    具体观察者(ConcreteObserver)角色:

    具体现察者角色实现观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协调。如果需要,具体现察者角色可以保存一个指向具体主题对象的引用。具体观察者角色通常用一个具体子类实现。

    示例:

    代码


    output

    Observer X's new state is ABC
    Observer Y's new state is ABC
    Observer Z's new state is ABC

    实际运用

    代码

    Output

    Notified Sorros of IBM's change to $120.10
    Notified Berkshire of IBM's change to $120.10
    Notified Sorros of IBM's change to $121.00
    Notified Berkshire of IBM's change to $121.00
    Notified Sorros of IBM's change to $120.50
    Notified Berkshire of IBM's change to $120.50
    Notified Sorros of IBM's change to $120.75
    Notified Berkshire of IBM's change to $120.75


    作者:dingli
    出处:http://www.cnblogs.com/dingli/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Android开发之JSON数据发送与获取
    Layouts之TableLayout表格布局
    Layouts之GridLayout网格布局
    Android WiFi模块学习
    关于Fragment的讲解及适配
    hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)
    Dynamics CRM SQL转化为FetchXML的在线转化工具
    Dynamics CRM 通过Odata创建及更新记录各类型字段的赋值方式
    shell命令执行hive脚本(hive交互,hive的shell编程)
    CRM 2013 Script Loading Deep Dive
  • 原文地址:https://www.cnblogs.com/dingli/p/2259500.html
Copyright © 2011-2022 走看看