行為型模式是將不同的行為**解耦,從而解決特定場景問題的一些經典結構。
行為型設計模式主要解決的就是「類或物件之間的互動」問題。行為型設計模式有11種,分別是:觀察者模式、模板方法模式、策略模式、職責鏈模式、狀態模式、迭代器模式、訪問者模式、備忘錄模式、命令模式、直譯器模式、中介模式。
職責鏈模式
多個處理器依次處理同乙個請求。乙個請求先經過 a 處理器處理,然後再把請求傳遞給 b 處理器,b 處理器處理完後再傳遞給 c 處理器,以此類推,形成乙個鏈條。鏈條上的每個處理器各自承擔各自的處理職責。
模板方法模式
定義乙個操作中的演算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個算的結構即使重定義該演算法的某些特定步驟。
換句話說,公用的處理邏輯放在父類中處理,不同的處理邏輯放在子類中
迭代器模式
提供一種方法順序訪問乙個聚合物件中的各個元素,而又不暴露該物件的內部表示。常用於遍歷乙個集合物件
備忘錄模式
在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。多用於資料備份和恢復的場景。
狀態模式
當乙個物件的行為取決於它的狀態,並且它必須在執行時根據狀態改變它的行為時就可以考慮狀態模式
觀察者模式
在物件之間定義乙個一對多的依賴,當乙個物件狀態改變的時候,所有依賴的物件都會自動收到通知。將觀察者和被觀察者**解耦。
命令模式
將乙個請求封裝為乙個物件,從而使得可以用不同的請求進行引數化,對請求排隊或者記錄請求日誌以及支援可撤銷的操作。
中介模式
中介模式定義了乙個單獨的(中介)物件,來封裝一組物件之間的互動。將這組物件之間的互動委派給與中介物件互動,來避免物件之間的直接互動。
策略模式
策略模式會定義一系列演算法,從概念上來看,所有這些演算法完全的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各種演算法類與使用類之間的耦合。
直譯器模式
當有乙個語言需要解釋執行,並且你可以將該語言中的句子表示為乙個抽象語法樹時,可以使用直譯器模式
訪問者模式
訪問者模式適用於資料結構相對穩定的系統,它把資料結構和作用域結構上的操作之間的耦合解脫開,使用操作集合可以相對自由地演化。
結構型模式描述如何將類或物件按某種布局組成更大的結構。它分為類結構型模式和物件結構型模式,前者採用繼承機制來組織介面和類,後者釆用組合或聚合來組合物件。
由於組合關係或聚合關係比繼承關係耦合度低,滿足「合成復用原則」,所以物件結構型模式比類結構型模式具有更大的靈活性。它們可以解決一些特定應用場景的問題。
第五次作業
一 問題及 include using namespace std class time void add a minute void add an hour void add seconds int n void add minutes int n void add hours int n voi...
第五次作業
當我們在討論多型性的時候,通常會用過載函式進行舉例,而這次發現的問題主要在過載運算子上,因此我希望通過對過載運算子的測試來得出乙個結論。我們想知道為什麼前置運算子和後置運算子會有區別,因此設計了乙個實驗來證明它 得到最終結果如預期那樣。通過這次作業,我能感受到前置和後置運算子的區別,通過x 和y x...
第五次作業
insert into student sno,sname,s sdept,sage values 201215128 陳冬 男 is 18 建表時規定學號唯一,而在建表時已經加入了該學號,所以不能有兩個相同學號。3.70 insert into student sno,sname,s sdept,...