在b站學習設計模式,主講人是李建忠老師,講解的很不錯,結合**一起講,比較容易理解。
知識點**的思維/人類的思維,包含兩個主要方向:底層思維和抽象思維。底層就是**是如何具體實現,如圖在硬體上實現的原理和方法;抽象就是把具有相同屬性的物件,歸納到同乙個類別中,也就是抽象,比如各種圖形:圓形,矩形,三角形。
面對物件的三大機制:封裝,繼承,多型。
解決複雜性:分而治之,抽象。
軟體設計最大的目標:可復用! **
採用分解的思想 mainfrom1.cpp,對不同的類,採用if else 來判斷,使用不同的實現方式。
class
mainform
:public form
protected
:virtual
void
onmousedown
(const mouseeventargs& e)
;virtual
void
onmouseup
(const mouseeventargs& e)
;virtual
void
onpaint
(const painteventargs& e);}
;void mainform::
onmousedown
(const mouseeventargs& e)
void mainform::
onmouseup
(const mouseeventargs& e)
else
if(rdorect.checked)
//改變
elseif(
...)
//...
this
->
refresh()
; form::
onmouseup
(e);
}void mainform::
onpaint
(const painteventargs& e)
//針對矩形
for(
int i =
0; i < rectvector.
size()
; i++
)//改變
//針對圓形
for(
int i =
0; i < circlevector.
size()
; i++
)//...
form::
onpaint
(e);
}
採用oop的方式。mainfrom2.cpp
對不同類的實現方式,在標頭檔案中,用虛函式來定義,在子類中用繼承虛函式的多型來實現這些方法。
class
mainform
:public form
protected
:virtual
void
onmousedown
(const mouseeventargs& e)
;virtual
void
onmouseup
(const mouseeventargs& e)
;virtual
void
onpaint
(const painteventargs& e);}
;void mainform::
onmousedown
(const mouseeventargs& e)
void mainform::
onmouseup
(const mouseeventargs& e)
else
if(rdorect.checked)
//改變
elseif(
...)
//...
this
->
refresh()
; form::
onmouseup
(e);
}void mainform::
onpaint
(const painteventargs& e)
//...
form::
onpaint
(e);
}
23個設計模式
設計模式有兩種分類方法,即根據模式的目的來分和根據模式的作用的範圍來分。根據目的來分 根據模式是用來完成什麼工作來劃分,這種方式可分為建立型模式 結構型模式和行為型模式 3 種。建立型模式 用於描述 怎樣建立物件 它的主要特點是 將物件的建立與使用分離 gof 中提供了單例 原型 工廠方法 抽象工廠...
23個設計模式 Observer
觀察者繼承基類,並實現其中的純虛函式 在更新資料的類中儲存了基類的指標,通過該指標就可以呼叫虛函式,進行顯示 另乙個類,給操作類傳遞引數,並呼叫該操作類的方法 新增 刪除 觀察者 include include include using namespace std class iprogress ...
23個設計模式定義助記
1,命令模式 定義 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援可撤銷的操作。2,觀察者模式 定義 定義物件間的一種一對多的依賴關係。當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。3,模式 定義 為其他物件提供一種 以控...