C# Singleton設(shè)計(jì)模式淺談
作者:佚名
這里介紹C# Singleton設(shè)計(jì)模式是告訴您如何在你的應(yīng)用程序創(chuàng)建一個唯一類示例的全局對象,也就是說,這個對象只能被實(shí)例化一次,這個對象同時提供一個訪問它的一個全局的訪問點(diǎn)。
在向大家詳細(xì)介紹C#語言之前,首先讓大家了解下C# Singleton設(shè)計(jì)模式,然后全面介紹C#語言。
近來,我在學(xué)習(xí)如何在C#語言中使用設(shè)計(jì)模式中讀到一些資料,其中有關(guān)C# Singleton設(shè)計(jì)模式引起了我的注意。
學(xué)過設(shè)計(jì)模式的開發(fā)者都知道C# Singleton設(shè)計(jì)模式。我想簡要地解釋一下這個設(shè)計(jì)模式是為那些尚未學(xué)習(xí)過設(shè)計(jì)模式的朋友。C# Singleton設(shè)計(jì)模式是告訴您如何在你的應(yīng)用程序創(chuàng)建一個唯一類示例的全局對象,也就是說,這個對象只能被實(shí)例化一次,這個對象同時提供一個訪問它的一個全局的訪問點(diǎn)。這種對象如應(yīng)用程序中的窗口管理器或者是打印假脫機(jī)、數(shù)據(jù)庫連接池等。
現(xiàn)在讓我們先看一下設(shè)計(jì)模式一書中對C# Singleton設(shè)計(jì)模式的C++實(shí)現(xiàn)(為了方便比較,我把實(shí)現(xiàn)的代碼寫成內(nèi)聯(lián)的方式):
- classSingleton
- {
- public:
- staticSingleton*Instance()
- {
- if(_instance==0)
- {
- _instance=newSingleton;
- }
- return_instance;
- }
- protected:
- Singleton();
- Private:
- StaticSingleton*_instance;
- };
- Stington*Singleton::_instance=0;
這里我不想對上述的代碼作解釋,大家可以參閱本文后面提供的參考文獻(xiàn)。
為了更好的理解C#,我這里也出示一下Java中的Singleton模式實(shí)現(xiàn)代碼(不是有人認(rèn)為C#是對Java的剽竊嗎J):
- classSingleton
- {
- publicSingletonInstance()
- {
- if(_instace==null)
- {
- synchronized(Class.forName("Singleton"))
- {
- if(_instance==null)
- {
- _instance=newSingleton();
- }
- }
- }
- return_instance;
- }
- protectedSingleton(){}
- privatestaticSingleton_instance=null;
- }
【編輯推薦】
責(zé)任編輯:佚名
來源:
博客園