今天看到一个关于北京地区可以查询高考的分数的新闻。想想自己当时高考的时候,没有网络、手机,加上在农村又没有报纸。每天只能苦苦等待到,受不了的时候就只能到邮局打电话确认可以不可以查分。银子是花了不少,但最后得到的也就是一个分数。现在就好了,不仅各种资讯发达,而且通过注册就可以等到最新信息。说到这里,Observer Pattern也就说完了,剩下的就是实现了。
IronPython的实现如下:
class ScoreSystem(object):    
        def __init__(self):    
                self.observers = []
        
        def add_observer(self, observer):    
                self.observers.append(observer)

def remove_observer(self, observer):    
                self.observers.append(observer)

def publish(self, message):
                for observer in self.observers:
                     observer.notify(message)


class Student(object):
        def __init__(self, name):
                self.name = name;    
                self.observers = []

def notify(self, message):
                print self.name,":",message


if __name__ == "__main__":
        scoreSystem = ScoreSystem()
        student1 = Student("Ben")
        scoreSystem.add_observer(student1)
        student2 = Student("James")
        scoreSystem.add_observer(student2)
        scoreSystem.publish("Score is available now!")

其中,ScoreSystem就代表实际中的查分系统,而Student就是高考考生。Student通过ScoreSystem的add_observer()的接口注册后,一旦有消息就可以及时得到通知,而不需要不断地询问是否可以查询了。

转载于:https://blog.51cto.com/bj007/338784

IronPython系列:Observer Pattern及其实现相关推荐

  1. 极速理解设计模式系列:2.观察者模式(Observer Pattern)

    4个角色:被观察者(Subject/目标对象接口),具体被观察者(ConcreteSubject/具体目标对象),观察者(Observer),具体观察者(ConcreteObserver)       ...

  2. Observer Pattern 观察者模式

    Observer Pattern (观察者模式) 定义: <设计模式>中对Observer模式的意图是这样描述的:"定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, ...

  3. Observer Pattern分析

    Observer Pattern分析 观察者模式的理解. 一.对象 1.观察者Observer 2.被观察者Subject 二.动作 观察者-------(action 观察)------>被观 ...

  4. 设计模式(19)-Observer Pattern

    一. 观察者(Observer)模式 观察者模式又叫做发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从 ...

  5. 设计模式 -行为型模式_ 观察者模式Observer Pattern 之 JDK内置的实现

    文章目录 概念 Code [主题] [观察者s] 观察者一 观察者二 [测试] 源码分析 java.util.Observable 目标类 java.util.Observer 观察者接口 notif ...

  6. 设计模式のObserver Pattern(观察者模式)----行为模式

    一.问题产生背景 又被称为订阅发布模式. 最初流传最广的一个面试题:有一只猫咪,猫咪叫了一声,老鼠跑了,老人惊醒了,男主人骂,小偷吓得不敢动了....这就产生一个问题的模型,当对象间存在一对多关系时, ...

  7. Design Pattern: Observer Pattern

    1. Brief 一直对Observer Pattern和Pub/Sub Pattern有所混淆,下面打算通过这两篇Blog来梳理这两种模式.若有纰漏请大家指正. 2. Use Case 首先我们来面 ...

  8. Java Observer Pattern(观察者模式)

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式. 关键代码:在抽象类里有一个 ArrayL ...

  9. 类似 Observer Pattern 的 NSNotificationCenter (实例)

    NSNotificationCenter 是 Cococa消息中心,统一管理单进程内不同线程的消息通迅,其职责只有两个:  1,提供"观查者们"对感兴趣消息的监听注册 [[NSNo ...

最新文章

  1. 贪心:Burst Balloons 最少次数完成射击气球
  2. zabbix 监控CDN带宽
  3. if中加return_答应我,别再 if/else 走天下了可以吗?
  4. 【转】log4j 设置将生成的日志进行gz压缩并删除过期日志
  5. 获取远程计算机动态ip,c# - 获取远程主机的IP地址
  6. 一年几百亿的电费 中国移动再提5G功耗问题
  7. SpringBoot 整合ActiveMQ_企业实战
  8. 线性分组码c语言实验报告,C语言线性分组码(附注释).doc
  9. redis的bitmap操作
  10. CVE-2021-2429:MySQL InnoDB Memcached 插件中的堆缓冲区溢出漏洞详解
  11. Python 爬取必应翻译
  12. python简单实现文件上传/下载
  13. 27_Pandas按星期,月份,季度和年份的天计算时间序列数据的总计和平均值
  14. Android开发实现选择城市界面,可根据拼音、首字母进行搜索
  15. 大数据技术之Structured Steaming课程
  16. ENVE5.3安装与汉化(一次性安装成功附安装包)
  17. 使用terminalizer工具录制终端生成GIF动画
  18. cpp实现直线的DDA算法
  19. python:线性回归分析实战案例
  20. Unity再更新AR Foundation套件拥有胜博发渲染工作管线

热门文章

  1. 舵机控制激光头(51单片机)
  2. MyBatis复习(一):开眼看世界
  3. 用户登陆注册功能(PHP)
  4. php.ini 只读,disabled by the php.ini setting phar.readonly
  5. 2021浙江高考首考成绩查询,浙江2021选考成绩什么时候出成绩?附2021浙江学考成绩查询时间...
  6. PS 部分技巧快捷键
  7. linux_adduser
  8. HTML5css3学习总结(2)
  9. 大熊君大话NodeJS之------Net模块
  10. 摘:多线程和异步的区别