zoukankan      html  css  js  c++  java
  • 观察者模式

    class Subject:
        def attach(self):
            pass
        def remove(self):
            pass
        def noticefy(self):
            pass
        def getState(self):
            pass
        def setState(self):
            pass
    
    class ConcreteSubject(Subject):
        observer = []
        state = ''
        def attach(self, obj):
            self.observer.append(obj)
        def remove(self, obj):
            self.observer.remove(obj)
        def noticefy(self):
            for i in self.observer:
                i.update()
        def getState(self):
            return self.state
        def setState(self, val):
            self.state = val
    
    class Observer:
        def update(self):
            pass
    
    class EmailObserver(Observer):
        def __init__(self, obj):
            self.subject = obj
        def update(self):
            print('email noticefy user', self.subject.getState())
    
    class LogObserver(Observer):
        def __init__(self, obj):
            self.subject = obj
        def update(self):
            print('log update', self.subject.getState())
    
    if __name__ == '__main__':
        subject = ConcreteSubject()
        subject.attach(EmailObserver(subject))
        subject.attach(LogObserver(subject))
        subject.setState('haha')
        subject.noticefy()
    

     

  • 相关阅读:
    js dom
    js Number string
    jq ajax数据交互
    js date 和 math
    js中英文网页切换
    日常使用
    php求和
    empty()
    时间戳、日期相互转换
    数组转字符串之间相互转换
  • 原文地址:https://www.cnblogs.com/agang-php/p/9948691.html
Copyright © 2011-2022 走看看