首先看乙個對於資料庫操作的程式:
<
div
class
=
"cnblogs_highlighter"
>#include
using
namespace
std;
class
dataoper
void
updatestu()
void
deletestu()
};
void
main()
我們看執行結果有多個重複的操作
如何避免呢,就是使用模板把我們不需要重複操作的地方封裝起來。
看一下新版**:
#include
using
namespace
std;
class
datatemplate
void
begintransation()
void
committransation()
void
closeconnection()
public
:
virtual
void
insertdata() = 0;
virtual
void
updatedata() = 0;
virtual
void
deletedata() = 0;
void
insertstu()
void
updatestu()
void
deletestu()
};
class
datadeal :
public
datatemplate
virtual
void
updatedata()
virtual
void
deletedata()
};
void
main()
執行一下結果:
結果相同,但是看看我們的類裡少了很多處理程式,我們只需要關心我們要處理的業務邏輯就可以了。
模板方法的效用一:節省子類**。
這樣,如果我們在父類把方法全部abstract,那麼我們就沒有做到減少子類**的作用。
因此,寫模板方法很容易,但是寫乙個好的模板方法就沒那麼容易了。
我們要做到良好的抽取,把固定的實現方法放在父類方法中去實現。
模板方法效用二:防止呼叫操作
在很多關於設計模式的書上,都是把父類的模板方法換成了乙個簡單的方法的堆積,如display**1,display*2等等。這樣就給很多讀者造成了一種錯覺,覺得模板方法就是去呼叫下面的方法,其實並不盡然。
後面會繼續談到與其它模式的運用組合。
設計模式 7 模板(從事務處理應用的模板)
首先看乙個對於資料庫操作的程式 include using namespace std class dataoper 我們看執行結果有多個重複的操作 如何避免呢,就是使用模板把我們不需要重複操作的地方封裝起來。看一下新版 include using namespace std class datat...
設計模式 7 模板(從事務處理應用的模板)
首先看乙個對於資料庫操作的程式 include using namespace std class dataoper 我們看執行結果有多個重複的操作 如何避免呢,就是使用模板把我們不需要重複操作的地方封裝起來。看一下新版 include using namespace std class datat...
應用系統中的事務處理
在應用系統中,我們往往需要對資料和事務進行訪問和處理,為了分離資料訪問和業務邏輯我們引入了dao,但在dao中處理事務也是一件重複無聊的工作,那麼我們可以採用現有的容器管理的事務如ejb和spring 我個人比較喜歡spring,但是如果我們不想採用這些容器那怎麼辦呢.我在這裡實現了乙個簡單的動態事...