個人理解:
觀察者模式的核心是subject的attach和detach方法,載入observer物件
uml類圖:
**實現:
public abstract class subject
public void detach(observer observer)
public void notify()
}public abstract class observer
public class subjecta : subject
//定義這個state只是為了同步更新observera的state
}public class observera : observer
private subjecta subject;
public observera(subjecta subject)
public override void update()
}
python**實現:
class basesubject(object):
__listeners=
def attach(self, listener):
def detach(self, listener):
self.__listeners.remove(listener)
def invoke(self):
for listener in self.__listeners:
listener.update()
class abstractlistener(object):
def update(self):
raise notimplementederror("abstract class")
class animallistener(object):
words=""
def update(self):
print("animal is saying " + self.words)
class plantlistener(object):
actions=""
def update(self):
print("plant is "+ self.actions +"ing");
if __name__ == "__main__":
subject=basesubject()
animal1=animallistener()
animal1.words="haha"
subject.attach(animal1)
plant1=plantlistener()
plant1.actions="laugh"
subject.attach(plant1)
subject.invoke()
觀察者模式 ObServer
觀察者模式 observer 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新 觀察者模式 observer 觀察者模式定義了一對多依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。讓主題物件在狀態發生變化時,會通知所有觀察者物件,讓他們能夠自動...
觀察者模式(OBSERVER)
觀察者模式是我選擇將其列出來的第乙個模式。看了這個模式的概念之後,有種豁然開朗的感覺。工作也由實踐上公升到了理論。平時使用的各種 net 控制項都使用了這種模式,將這種模式應用到組成乙個系統的各個元件中去,怎乙個 妙 字了得。理解了它之後,不竟又對 net 的框架敬佩有佳。不知道這其中隱藏了多少未知...
Observer 觀察者模式
觀察者模式 inte ce subject class loginsubject implements subject public function detach observer observer self observers newobservers public function notif...