IronPython系列:Observer Pattern及其实现
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!")
转载于:https://blog.51cto.com/bj007/338784
IronPython系列:Observer Pattern及其实现相关推荐
- 极速理解设计模式系列:2.观察者模式(Observer Pattern)
4个角色:被观察者(Subject/目标对象接口),具体被观察者(ConcreteSubject/具体目标对象),观察者(Observer),具体观察者(ConcreteObserver) ...
- Observer Pattern 观察者模式
Observer Pattern (观察者模式) 定义: <设计模式>中对Observer模式的意图是这样描述的:"定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, ...
- Observer Pattern分析
Observer Pattern分析 观察者模式的理解. 一.对象 1.观察者Observer 2.被观察者Subject 二.动作 观察者-------(action 观察)------>被观 ...
- 设计模式(19)-Observer Pattern
一. 观察者(Observer)模式 观察者模式又叫做发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从 ...
- 设计模式 -行为型模式_ 观察者模式Observer Pattern 之 JDK内置的实现
文章目录 概念 Code [主题] [观察者s] 观察者一 观察者二 [测试] 源码分析 java.util.Observable 目标类 java.util.Observer 观察者接口 notif ...
- 设计模式のObserver Pattern(观察者模式)----行为模式
一.问题产生背景 又被称为订阅发布模式. 最初流传最广的一个面试题:有一只猫咪,猫咪叫了一声,老鼠跑了,老人惊醒了,男主人骂,小偷吓得不敢动了....这就产生一个问题的模型,当对象间存在一对多关系时, ...
- Design Pattern: Observer Pattern
1. Brief 一直对Observer Pattern和Pub/Sub Pattern有所混淆,下面打算通过这两篇Blog来梳理这两种模式.若有纰漏请大家指正. 2. Use Case 首先我们来面 ...
- Java Observer Pattern(观察者模式)
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式. 关键代码:在抽象类里有一个 ArrayL ...
- 类似 Observer Pattern 的 NSNotificationCenter (实例)
NSNotificationCenter 是 Cococa消息中心,统一管理单进程内不同线程的消息通迅,其职责只有两个: 1,提供"观查者们"对感兴趣消息的监听注册 [[NSNo ...
最新文章
- 贪心:Burst Balloons 最少次数完成射击气球
- zabbix 监控CDN带宽
- if中加return_答应我,别再 if/else 走天下了可以吗?
- 【转】log4j 设置将生成的日志进行gz压缩并删除过期日志
- 获取远程计算机动态ip,c# - 获取远程主机的IP地址
- 一年几百亿的电费 中国移动再提5G功耗问题
- SpringBoot 整合ActiveMQ_企业实战
- 线性分组码c语言实验报告,C语言线性分组码(附注释).doc
- redis的bitmap操作
- CVE-2021-2429:MySQL InnoDB Memcached 插件中的堆缓冲区溢出漏洞详解
- Python 爬取必应翻译
- python简单实现文件上传/下载
- 27_Pandas按星期,月份,季度和年份的天计算时间序列数据的总计和平均值
- Android开发实现选择城市界面,可根据拼音、首字母进行搜索
- 大数据技术之Structured Steaming课程
- ENVE5.3安装与汉化(一次性安装成功附安装包)
- 使用terminalizer工具录制终端生成GIF动画
- cpp实现直线的DDA算法
- python:线性回归分析实战案例
- Unity再更新AR Foundation套件拥有胜博发渲染工作管线
热门文章
- 舵机控制激光头(51单片机)
- MyBatis复习(一):开眼看世界
- 用户登陆注册功能(PHP)
- php.ini 只读,disabled by the php.ini setting phar.readonly
- 2021浙江高考首考成绩查询,浙江2021选考成绩什么时候出成绩?附2021浙江学考成绩查询时间...
- PS 部分技巧快捷键
- linux_adduser
- HTML5css3学习总结(2)
- 大熊君大话NodeJS之------Net模块
- 摘:多线程和异步的区别