設計模式之python版(十) 觀察者模式

2021-06-06 20:40:23 字數 1010 閱讀 3930

觀察者模式:

場景特性:

結構特性:

#!/usr/bin/env python  

#encoding: utf-8

class subject:

def __init__(self):

self.obs =

def add_ob(self, ob):

def del_ob(self, ob):

self.obs.remove(ob)

def notify(self):

for ob in self.obs:

ob.update()

class observer:

def __init__(self):

pass

def update(self):

pass

class create_subject(subject):

def __init__(self):

subject.__init__(self)

self.substatue = ''

class create_ob(observer):

def __init__(self, name, csubj):

self.name = name

self.status = ''

self.csubj = csubj

def update(self):

print '觀察者的新狀態是' % (self.name, self.csubj.substatue)

if '__main__' == __name__:

csub = create_subject()

csub.add_ob(create_ob('a', csub))

csub.add_ob(create_ob('b', csub))

csub.add_ob(create_ob('c', csub))

csub.notify()

結果:

設計模式之觀察模式

我們使用jdk提供的api來實現乙個觀察者模式,學生向老師提問問題,然後通知老師有學生提問,這個案例裡面,老師屬於觀察者,需要實現observer介面。學生屬於被觀察者,需要繼承observable類。學生發生變化通知老師。public class student extends observabl...

設計模式 十 觀察者模式

原理 又叫發布 訂閱模式,定義一種一對多的依賴,讓多個觀察者同時監聽某個主題物件,當該主題物件發生狀態變化時,通知所有已註冊的觀察者,使他們能夠自動更新自己例子 subject 抽象主題,它把所有對觀察者的物件引用儲存在乙個聚集裡,每個主題都可以有任何數量的觀察者。抽象主題提供介面 attach d...

Python 設計模式之觀察者模式

觀察者模式之西遊記師徒四人 被觀察者 class imaster object def init self self.prentice list def name self raise notimplementederror 收徒def add prentice self,prentice if i...