設計模式 行為型模式 Observer模式

2021-10-02 19:14:52 字數 1975 閱讀 9507

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新

缺點:

注意事項:

observer.hpp

#ifndef _subject_h_ 

#define _subject_h_

#include

#include

#include

using

namespace std;

typedef string state;

class

observer

;class

subject

virtual

void

attach

(observer* obv)

virtual

void

detach

(observer* obv)

virtual

void

notify()

;virtual

void

setstate

(const state& st)=0

;virtual state getstate()

=0;protected

:subject()

private

: list>

* _obvs;};

class

concretesubject

:public subject

~concretesubject()

state getstate()

void

setstate

(const state& st)

private

: state _st;};

class

observer

virtual

void

update

(subject* sub)=0

;virtual

void

printinfo()

=0;protected

:observer()

state _st;};

class

concreteobservera

:public observer

concreteobservera

(subject* sub)

virtual

~concreteobservera()

//傳入 subject 作為引數,這樣可以讓乙個 view 屬於多個的 subject。

void

update

(subject* sub)

void

printinfo()

private

: subject* _sub;};

class

concreteobserverb

:public observer

concreteobserverb

(subject* sub)

virtual

~concreteobserverb()

}//傳入 subject 作為引數,這樣可以讓乙個 view 屬於多個的 subject。

void

update

(subject* sub)

void

printinfo()

private

: subject* _sub;};

void subject::

notify()

}#endif

main.cpp

#include

"observer.h"

#include

using

namespace std;

intmain()

設計模式 行為型模式

行為型模式用於描述程式在執行時複雜的流程控制,即描述多個類或物件之間怎樣相互協作共同完成單個物件都無法單獨完成的任務,它涉及演算法與物件間職責的分配。行為型模式分為類行為模式和物件行為模式,前者採用繼承機制來在類間分派行為,後者採用組合或聚合在物件間分配行為。由於組合關係或聚合關係比繼承關係耦合度低...

設計模式(結構型模式 行為型模式)

一 結構型模式 1.介面卡模式 通過乙個具體類把適配者適配到目標介面中,使得原本不相容的那些類可以一起工作。舉個例子 可以把二分查詢和快排 適配者 封裝到乙個dataoperation 目標介面 介面中,再操作adapter 介面卡 來進行操作。adapter quicksort sortobj,b...

設計模式 行為型模式總結

什麼是行為型模式 行為型模式 行為型模式涉及到演算法和物件間職責的分配。它不僅描述物件或者類的模式,還描述它們之間的通訊模式。這些設計模式刻畫了在執行難以跟蹤的複雜的控制流。它們將你的注意力從控制流轉移到物件之間的 上來。分類 行為物件模式 封裝物件 封裝變化是很多設計模式的主題,當乙個程式的某個方...