觀察者模式 Observer

2021-05-22 01:58:25 字數 1515 閱讀 9725

個人理解:

觀察者模式的核心是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...