設計模式 7 模板(從事務處理應用的模板)

2021-06-01 20:42:36 字數 2366 閱讀 1583

首先看乙個對於資料庫操作的程式:

<divclass="cnblogs_highlighter">#include

usingnamespacestd;

classdataoper

voidupdatestu()

voiddeletestu()

};

voidmain()

我們看執行結果有多個重複的操作

如何避免呢,就是使用模板把我們不需要重複操作的地方封裝起來。

看一下新版**:

#include

usingnamespacestd;

classdatatemplate

voidbegintransation()

voidcommittransation()

voidcloseconnection()

public:

virtualvoidinsertdata() = 0;

virtualvoidupdatedata() = 0;

virtualvoiddeletedata() = 0;

voidinsertstu()

voidupdatestu()

voiddeletestu()

};

classdatadeal :publicdatatemplate

virtualvoidupdatedata()

virtualvoiddeletedata()

};

voidmain()

執行一下結果:

結果相同,但是看看我們的類裡少了很多處理程式,我們只需要關心我們要處理的業務邏輯就可以了。

模板方法的效用一:節省子類**。

這樣,如果我們在父類把方法全部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,但是如果我們不想採用這些容器那怎麼辦呢.我在這裡實現了乙個簡單的動態事...