觀察者模式:
場景特性:
結構特性:
#!/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...