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
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题,欢迎交流
  • 相关阅读:
    pytorch图像处理的问题
    MWCNN中使用的haar小波变换 pytorch
    GhostNet: More Features from Cheap Operations
    人脸检测和识别以及检测中loss学习
    人脸检测和识别以及检测中loss学习
    C++ string的find类函数的使用
    pytorch各个版本的.whl文件下载地址
    人脸识别和检测中loss学习
    人脸识别和检测中loss学习
    人脸识别和检测中错误数据的三种类别
  • 原文地址:https://www.cnblogs.com/first-semon/p/9118978.html
Copyright © 2011-2022 走看看