ace
中的設計模式
(1)——
singleton
joise.li @ 2006-9-29,fyt04121
1.singleton
模式簡介
singleton
是gof
聖經中最簡單的乙個模式了,主要用於建立在系統中具有唯一例項又需要到處使用的類,實現起來非常簡單。
#include
using
namespace
std;
class
my_singleton
;
my_singleton
*my_singleton::m_instance = null;
my_singleton
*my_singleton::instance()
return
m_instance;
}
void
my_singleton::show_my_life()
my_singleton
::my_singleton(){}
my_singleton
::~my_singleton()
}
intmain()
;2.
ace中如何使用
singleton
如上例中,
singleton
**非常簡單,也很成熟,但是如果在乙個系統中有很多地方都需要使用
singleton
模式,則需要寫相當多的類似重複**,枯燥且低效,如果碰巧使用了
ace,那麼使用
ace封裝的
singleton
,則可以更加簡單:
class
normal_test
;
normal_test
::normal_test(){}
typedef
ace_singleton
void
normal_test::show_my_life()
int
ace_tmain(int
argc, ace_tchar *argv)
;
如上所示,獲得了以下優點:
1.**減少了一半還多,變得更加簡潔、清晰,
2.使用了double-check技術,免費的獲得了執行緒安全。
3.沒有使用繼承、虛函式,效能、效率不會受影響。
3.ace
的singleton
是如何實現的?
以下**節選自
ace的源**,為清晰起見,去除了一些無關的巨集開關
a)以下是
ace_singleton
的定義:
template
type, class ace_lock> class ace_singleton : public ace_cleanup ; b) 看一下instance的實現: template type, class ace_lock> type * ace_singleton } return &singleton->instance_; } 說明:double-check技術主要是解決執行緒安全問題,避免在初始化時多執行緒重入,導致instance被例項化兩次。 c) 再看一下instance_i的實現: template type, class ace_lock> ace_singleton ace_singleton 4. 題外話: ace_singleton 較好的封裝了 singleton 模式,對於現代應用系統,一般而言會有相當多的地方需要使用 singleton 模式,如執行緒池、記憶體池、資料連線池等,通過 ace_singleton 類,可以達到簡化**的目的,同時解決 gof聖經中未提的執行緒安全的問題。後續我會繼續就 ace中的使用的設計模式提出來與大家進行**、學習。 5.作者相關資訊: 1 singleton 模式簡介 singleton 是gof 聖經中最簡單的乙個模式了,主要用於建立在系統中具有唯一例項又需要到處使用的類,實現起來非常簡單。include using namespace std class my singleton my singleton my singlet... 這兩天在學習c 網路程式設計卷二,第二章開始講到reactor模式,這兩天結合書上的例子,寫了個簡單的echo server端程式,如下 include include include include include include include include include include i... 看了設計模式,到現在也該是處出貨時候了。首先必須明確設計模式的位置,它是在需求分析 use case 後,系統分析結束之後,設計時進行的。往往設計模式會帶來乙個問題 過度設計。因為設計模式要求增加類。同時我們看到他也不是萬靈藥,他受前期需求以及系統分析的影響。關鍵有以下幾點原則 1。乙個類最好只有乙...ACE中的設計模式
ACE中的reactor模式學習
設計模式的學習1