美文网首页Python精耕细作Python点滴
[Python设计模式] 10 - 观察者模式

[Python设计模式] 10 - 观察者模式

作者: 蓝色信仰 | 来源:发表于2015-04-05 19:31 被阅读1542次

设计模式的目的是让代码易维护、易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的。

观察者模式:又叫发布订阅模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时,会通知所有观察者对象,是他们能自动更新自己。

代码结构

class Topic(object):
    """主题类。保存所有观察者实例的引用,每个主题都可以有很多观察者
    可以增加和删除观察者"""
    def __init__(self):
        self.obs = []

    def Attach(self, ob):
        self.obs.append(ob)

    def Detach(self, ob):
        self.obs.remove(ob)

    def Notify(self):
        for ob in self.obs:
            ob.Update()

class Observer(object):
    """抽象观察者类,收到主题的变更通知时,更新自己"""
    def Update(self):
        raise NotImplementedError()      

class ConcreteTopic(object):
    """一个具体主题"""
    def __init__(self):
        self.state = None

    def ChangeState(self, newState):
        self.state = newState
        self.Notify()

class ConcreteObserver(object):
    """一个具体监听类"""
    def __init__(self, topic):
        self.topic = topic

    def Update(self):
        print self.topic.state

def client():
    topic = ConcreteTopic()
    topic.Attach(ConcreteObserver(topic))

    topic.ChangeState('New State')

众多MQ中间件都是采用这种模式的思想来实现的。

观察者模式可以让主题和观察者之间解耦,互相之间尽可能少的依赖。不过抽象主题和抽象观察者之间还是有耦合的。

原文地址:http://www.isware.cn/python-design-pattern/10-observer/

相关文章

  • Python观察者模式

    [python|高级篇|笔记|设计模式|观察者模式] 这两天读了[Head First设计模式][1]和[Pyth...

  • 观察者设计模式

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

  • RxJava基础—观察者模式

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

  • 行为模式10-行为模式总结

    行为模式10-行为模式总结 行为模式总共有11个设计模式: 观察者模式(Observer) 中介者模式(Media...

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

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

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

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

  • python设计模式

    观察者模式 python观察者模式是一种设计模式需求:员工上班在偷偷看股票,拜托前台一旦老板进来,就通知他们,让他...

  • [Python设计模式] 10 - 观察者模式

    设计模式的目的是让代码易维护、易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的。 观察者模...

  • RxJava设计模式与原理

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

  • 设计模式

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

网友评论

    本文标题:[Python设计模式] 10 - 观察者模式

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