python基础案例:观察者模式

使用观察者模式让班长通知学生起来上课了

# 主题 ---> 通知者 --->班长
class Monitor(object):
    def __init__(self):
        self.observer = []  # 保存所有观察对象
        self.status = ''  # 表示状态

    def attach(self, observer):
        '''通知每一个观察者'''
        self.observer.append(observer)

    def notify(self):
        # 通知每一个观察者
        for observer in self.observer:
            observer.update()


# 观察者--->睡觉的同学
class SleepStudentObserver(object):

    def __init__(self, name, monitor):
        self.name = name
        self.monitor = monitor  # 绑定通知者

    def update(self):
        print('{},{}赶快起来学习吧'.format(self.monitor.status, self.name))


if __name__ == '__main__':
    monitor = Monitor()
    observer1 = SleepStudentObserver('zs', monitor)
    observer2 = SleepStudentObserver('ls', monitor)
    monitor.attach(observer1)
    monitor.attach(observer2)
    monitor.status = '时间到了'
    monitor.notify()

运行结果:

时间到了,zs赶快起来学习吧
时间到了,ls赶快起来学习吧

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值