zoukankan      html  css  js  c++  java
  • [Design] Observer Pattern

      行为模式主要是责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。
      行为模式分为类的行为模式和对象的行为模式两种。
    类的行为模式
        类的行为模式使用继承关系在几个类之间分配行为。
    对象的行为模式
        对象的行为模式则使用对象的聚合来分配行为。
    --------------------------------------------------------
    观察者模式
      观察者模式对象的行为模式,又叫做发布-订阅模式(Publish/Subscribe)、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
         观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们自动更新自己。

    结构及角色


    •  1、抽象主题(Subject)角色

        主题把所有对观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,主题角色又叫做抽象被观察者角色,一般由一个抽象类或接口实现。

    • 2、抽象观察者(Observer)角色

        为所有具体观察者定义一个接口,在得到主题的通知进更新自己。这个接口叫作更新接口。此角色一般由一个抽象类或接口实现。

    • 3、具体主题(Concrete Subject)角色

        将有关状态存入具体观察者对象,在具体主题的内部状态发生变化时,通知所有登记过的观察者对象。以叫做具体被观察者角色。一般由一个具体子类实现。

    • 4、具体观察者(Concrete Observer)角色

        存储与主题的状态自恰的状态。具体观察者角色实现抽象观察者所声明的更新接口,以便使本身状态与主题状态相协调。如果需要,可以保存一个指向具体主题对象的引用。一般由一个具体类来实现。

  • 相关阅读:
    发个小程序希望有人需要(操作摄像头)
    (转)Qt中translate、tr关系 与中文问题
    VS2008代码自动对齐
    (转)Qt国际化(源码含中文时)的点滴分析
    (转)Bibtex使用方法
    (转)new,operate new和placement new
    (转)C++中的虚函数表
    (转)QString 与中文问题
    (转)static_cast, dynamic_cast, const_cast探讨
    试试
  • 原文地址:https://www.cnblogs.com/abeen/p/1441880.html
Copyright © 2011-2022 走看看