第五天 模板方法 外觀模式 觀察者模式

2022-03-12 07:17:21 字數 1672 閱讀 3815

模板方法:定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中.模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟.

當我們要完成在某一細節層次一致的乙個過程或一些列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,通常考慮用模板方法來處理.

演算法步驟固定,但其中某個或某些步驟會發生變化時,將變化的步驟抽象, 由子類去實現.而策略模式是客戶端對不受(或較少受到)演算法間的切換的影響.針對的是不同的演算法.

view code

外觀模式:為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用.

1.在設計初期階段,應該要有意識的將不同的兩個層分離.層與層之間建立外觀

2.在開發階段,子系統往往因為不斷的重構演化而變得越來越複雜,這時增加外觀facade可以提供乙個簡單的介面,減少他們之間的依賴.

3.在維護乙個遺留的大型系統時,可能這個系統已經非常難以維護和擴充套件了,此時使用facade模式,為新系統開發乙個外觀類,來提供設計粗糙或高度複雜的遺留**的比較清晰簡單的介面,讓新系統與facade物件互動,facade與遺留**互動所有複雜的工作.

view code

1

namespace

subsystem27

};89classb10

13void

fun2(){}

14};

1516

classc17

20};

21};

2223

namesapce newsystem

2433

34void

func2()

3539

private:40

subsystem::a a_;

41subsystem::b b_;

42subsystem::c c_;

43};

4445

//client

4651

//此時將新系統和(舊)子系統就隔離開,在新系統中使用facade提供的介面

52//

而實現細節卻是由子系統定義的.如果需要更換子系統也只需要修改facade,

53//

而不需要或較少量修改新系統

54 }

觀察者模式:定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件.這個主題物件在狀態發生變化時會通知所有觀察者物件,使它們能夠自動更新自己.

何時? 當乙個物件的改變需要同時改變其他物件的時候,而且它不知道具體有多少物件有待改變.+

view code

1

class

subscriber2;

67class

blog8;

1718

19class celebrityblog : public

blog

2028}29

};30

3132

class myreader : public

subscriber

3339

};40

41//

client system

42int

sys()

43

國慶第五天

直接在寢室待了乙個上午 一 matlab 試了一下昨天安裝的matlab2010b發現檔案都打不開,報這個錯 undefined function or method uiopen for input arguments of type char 二 c 1.找到了個之前 裡的乙個問題 把本週開頭和...

集訓第五天

今天學習了乙個快速指數冪取餘的演算法。就拿一道題來說明 description 上初中的時候我們就學會了冪乘運算,可是我們卻不知道對於高階的冪乘,出結果的方法比較慢,那麼你有什麼更好的方法嗎?input 第1行,乙個整數n 1 n 1000 表示要計算的資料組數 第2 n 1行,每行兩個整數,第1個...

實習第五天

今天是第一周的最後一天,最近的專案中乙個類似qq聊天系統為最重要的任務,師傅交給 我的任務是用layer完成三個介面,新增好友介面 查詢好友介面以及傳送好友新增請求介面。先說明一下layer的基本頁面模板 lang en charset utf 8 傳送好友請求title rel styleshee...