• .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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    仿当当网鼠标经过图片翻转
    静态随鼠标移动的Tip
    Weblogic免项目名
    weblogic中文乱码问题
    IE6下的{clear:both}出现怪异的空白
    动态随鼠标移动的Tip
    base标签在ie6下的恶心问题
    javascript中for和for in 区别
    jQuery性能优化<<转>>
    Ant项目打包脚本
  • 原文地址:https://www.cnblogs.com/dingli/p/2259500.html
Copyright © 2020-2023  润新知