zoukankan      html  css  js  c++  java
  • 观察者模式的python实现

    什么会观察者模式?观察者模式就是订阅-推送模式。是为了解耦合才会被利用起来的设计模式。

    经典的就是boss 前台和员工之间的故事。一天A员工在看电影,B员工在看动漫,但是两人担心boss来了,自己没及时关掉页面,被老板发现,就委托前台的小姐姐如果老板来了通知一下他们。

    对于A和B来说就出于观察者的位置,前台小姐姐就出于统治者的位置。

    分析一下:前台小姐姐需要有两个属性:老板的状态和需要通知的员工列表

    class  basenotify():
        def __init__(self):
            self.t_list = []
            self.status = ''
        def myappend(self,observer):
            pass
        def update(self):
            pass
    
    class sister(basenotify):
        def __init__():
            basenotify.__init__(self)
            pass
        def myappend(observer):
            self.t_list.append(observer)
        def notify():
            for v in self.t_list:
                v.update()

    员工可以没有属性,但是可以有多个员工

    class baseobserver():
        def __init__(self,name,sex):
            self.name = name
            self.sex = sex
            pass
        def update(self):
            pass
    
    class Aobserver(baseobserver):
        def __init__(self,name,sex):
            baseobservise.__init__(name,sex)
            pass
    
        def update(self):
            print '11111111111111'
    
    class Bobserver(baseobserver):
        def __init__(self,name,sex):
            baseobservise.__init__(name,sex)
            pass
    
        def update(self):
            print '22222222222222'

    如何调用:

    if __name__=="__main__":
        mysister = sister()
        a= Aobservise()
        b= Bobservise()
        mysister.append(a)
        mysister.append(b)
        mysister.status ='i am comming'
        mysister.notify()
    作者:first_semon
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题,欢迎交流
  • 相关阅读:
    firefox 网页编辑器不能访问剪贴板图片的问题解决
    ubuntu 安装rails 遇到的问题及解决办法
    Mysql索引建立、查询、删除
    UIImage 各种处理(分类)
    iOS加载Gif图片
    json plist 互转
    克隆网站 mac
    UIlabel
    pod 更新 升级
    2016审核标准
  • 原文地址:https://www.cnblogs.com/first-semon/p/9118978.html
Copyright © 2011-2022 走看看