設計模式 窗體基類模板方法定義

2021-06-29 02:21:53 字數 1784 閱讀 4673

模板方法模式(template method pattern)

模版方法中的方法可以分為兩大類:模版方法(template method)和基本方法(primitive method)。

a.模版方法

乙個模版方法是定義在抽象類中的,把基本操作方法組合在一起形成乙個總算法或乙個總行為的方法。

這個模版方法一般會在抽象類中定義,並由子類不加以修改地完全繼承下來。

b.基本方法

基本方法又可以分為三種:抽象方法(abstract method)、具體方法(concrete method)和

鉤子方法(hook method)。

抽象方法:乙個抽象方法由抽象類宣告,由具體子類實現。在c#語言裡乙個抽象方法以abstract

關鍵字標示出來。

具體方法:乙個具體方法由抽象類宣告並實現,而子類並不實現或置換。在c#語言裡面,乙個具體方法

沒有abstract關鍵字。

下面講解窗體基類的模板方法實現:

抽象方法必須定義在抽象類中(abstract class),在某些場合不一定使用抽象類,比如frmbase是個具體類,因此我將模板方法改為虛擬(virtual)的。

///

///在基類定義查詢資料的模板方法,由派生窗體實現具體的查詢功能。

//////

protected

virtual

datatable

dosearch()

派生類具體實現:

//複寫

(override)

模板方法,具體實現

protected

override

datatable

dosearch()

窗體基類介面:

/// 在基類定義查詢資料的模板方法,由派生窗體實現具體的查詢功能。 

///  

/// 

protected

virtual datatable dosearch()

} 派生乙個產品定義窗體:

//複寫(override)模組方法,具體實現

protected

override datatable dosearch()

} 搜尋功能在窗體基類實現了,我們只需要定義具體的資料查詢方法。

通過重寫dosearch模組方法,從業務邏輯層返回資料。

///

///業務邏輯層

///public

class

bll_product

///

///構建測試資料表

//////

private

datatable

getdemodata()

}

WPF窗體自定義基類

最近公司開始乙個專案開發,打算使用wpf實現,由於wpf算是比較新的知識吧,公司也沒有什麼人懂,都是臨時抱佛腳的。專案中有不少窗體會共用到一些東西,比如窗體樣式風格之類的。這很自然的就想到使用繼承嘛,以往我們在winfrom下只要簡單建乙個類,讓窗體繼承自己自定義的基類即可,但,wpf窗體卻不一樣,...

模板設計模式 設計模式 模板方法模式

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。首先需要一定抽象的定義,沒有具體的實現,但是在抽象類的行為中,子類去程序這個抽象類,重寫抽象方法,實現不...

自然框架 頁面基類與設計模式(二) 模板模式

前篇 自然框架 頁面基類與設計模式 一 橋接模式 橋接模式的補充 下面的一段是橋接模式裡後補充的一段,橋接模式的乙個小結 什麼是交接模式?引用 大話設計模式 裡的定義 橋接模式 bridge 將抽象部分和他的實現部分分離,使他們都可以獨立的變化。p229 小菜 我覺得交接模式所說的 將抽象部分和他的...