當乙個物件被多個物件所依賴,而且這乙個物件發生改變時,需要通知那多個物件。並且這種改變經常發生。
老師給學生布置作業如果在放假期間,老師想要給學生們布置作業。如果學生乙個乙個打**問老師,老師可能還沒有想好要不知什麼作業,而且布置了作業也可能會改動,所以學生就需要隔一段時間去問一下老師,確定作業有沒有改變,這樣效率比較低。如果老師將所有學生的**號都記下來,有作業就直接**短息,作業改動也**簡訊,這樣就十分高效。
**:
#include#include#includeusing namespace std;
class observer_student
};class subject_teacher };
class student : public observer_student
virtual void print_homework()
private:
string homework;
};class english_teacher : public subject_teacher
void attach(observer_student *observer)
void detach(observer_student *observer)
void notify()
}private:
listl_observers;//觀察者佇列
string homework;//作業
};int main()
結果:
今天沒有作業
觀察者模式的實現,除了巧妙的邏輯關係以外,重要的是,觀察者與主題之間通過各自的抽象進行耦合,實現松耦合。是多型與虛函式的典型應用。 23大設計模式之觀察者模式
常用的設計模式有23種,總體來說設計模式分為三大類 1,建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。2,結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。3,行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模...
23種設計模式 觀察者模式
在軟體構建過程中,我們需要為某些物件建立一種 通知依賴關係 乙個物件 目標物件 的狀態發生改變,所有的依賴物件 觀察者物件 都將得到通知。如果這樣的依賴關係過於緊密,將使軟體不能很好地抵禦變化。使用物件導向技術,可以將這種依賴關係弱化,並形成一種穩定的依賴關係。從而實現軟體體系結構的松耦合。定義物件...
設計模式 觀察者 C 實現
觀察者設計模式 定義物件之間的一種 一對多 的依賴關係,當乙個物件狀態發生改變的時候,所有依賴這個物件的觀察者都會得到通知並且被自動更新。這種模式也稱為 發布 訂閱 模式。目標就是發布者,他不知道訂閱者是誰,這個物件可以有任意多個訂閱者可以接受發布者傳送的訊息。通過抽象介面就把目標和觀察者進行了解耦...