青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養德,非澹薄無以明志,非寧靜無以致遠。
隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
數據加載中……

設計模式之Singleton(單件)模型

Singleton(單件)模型:一個類只有一個實例。
下面是C++代碼的單件模型:
Class Singleton

   static Singleton s;
    int i; 
   Singleton(int x):i(x){} 
   Singleton& operator=(Singleton&);//賦值操作符 
   Singleton(const Singleton&);//拷貝構造函數,防止被用戶調用,聲明為私有
public: 
   static Singleton& instance() 
   {return s;}//產生對象的引用 
   int getValue() {return i;} 
   void SetValue(int x)
   {i = x;}
 };

Singleton Singleton::s(47);

int main(){
   Singleton& s= Singleton::instance();
   cout << s.getvalue() <<endl;
   Singleton& s2 = Singleton::instance()'
   s2.setvalue(9);
   cout<<s.getvalue()<<endl;
}
創建單件的關鍵是防止程序員控制對象的生存期的權利,所以構造函數,拷貝構造函數,賦值操作符都要聲明為私有(本例中沒有實現,因為賦值操作符和拷貝構造沒用到),并且防止編譯器產生任何缺省的構造函數。
要注意的是,這里的對象可以靜態創建,也可以知道程序員根據需求顯式創建,這個創建的方式又稱為lazy initialzation,這個做法只有在創建的對象的代價不大,并且不總是需要它的情況下才有意義。上面的這個方法并沒有限制只創建一個對象,支持創建有若干對象的對象池。如果遇到對象池中共享對象的問題,則可以對進出對象池的對象登記的方法解決。
類中的static靜態成員都是一個單件,從這個意義上說,編程語言提供了對單件的直接支持,但是如果一個對象依賴于一個對象時,對象的正確初始化就很重要了。下面是對上面的示例代碼的改進。
#include <iostream>
using namespace std;

class Singleton{
   int i;
   Singleton(int x):i(x){}
   void operator=(Singleton&);
   Singleton(const Singleton&);
public:
   static Singleton& intstance(){
   static Singleton s(45);
   return s;
  }
   int getValue() {retrun 1;}
   void setValue() {i = x;}
}

int maint()
{
   Singleton& s= Singleton::instance();
   cout<<s.getValue() <<endl;
   Singleton s2=Singletonf::instance();
   s2.setValue(9);
   cout<<s.getValue<<endl;
}
下面是Scott Meyers兩個互相依賴的單間模型,由于是Scott Meyers創建,又稱Meyers單件。
 Class Singleton1{
    Singleton1(){}
public: 
   static Singleton1& ref
   {
       static Singleton1 single;
       return single; 
   }
};
 
Class Singleton2{ 
   Singleton1 &s1; 
   Singleton2(Singleton1& s):s1(s){}
public: 
   static Singleton2& ref()
   { 
      static Singleton2 single(singleton1::ref)); 
      return single; 
   }
    Singleton1& f()
   {return s1;};

int main()

      Singleton1& s1 = Singleton2::ref().f();//導致惟一的Singleton2對象創建,Singleton2創建中,Singleton1::ref()被調用,導致Singleton1對象創建。
 }

Singleton-ness是單件模型的變體:利用遞歸模板實現。
#include <iostream>
using namespace std;

template class Singleton

   Singleton(const Singleton&); 
   Singleton& operator= (const Singleton&); 
 protected: 
   Singleton(){} 
   vitrual ~Singleton()
   {}
public: 
   static T& instance() 
   {
      static T theInstance; 
      return theInstance; 
   }
};
 
//Sample class to be made into a Singleton
Class MyClass:public Singleton
{
   int x;
protected:
    friend class Singleton;
    MyClass() 
   { x = 0;}
public: 
   void setValue(int n) 
   {x=n;}
int getVlalue()const 
   {return x;}
};

int main()

   MyClass& m = MyClass::Instance(); 
   cout << m.getValue()<<endl;
   m.setValue(1);
   cout << m.getValue()<<endl;
}
Singleton<MyClass>為友元;Singleton不依賴MyClass的大小,實際上這只是對模板參數的靜態依賴。只有當MyClass::Instance()被第一次調用時,才需要MyClass的大小。 單件模型實際應用的很少。

posted on 2009-04-09 21:28 Benjamin 閱讀(812) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区二区视频在线观看2020| 免费看的黄色欧美网站| 欧美激情中文字幕一区二区 | 日韩午夜av电影| 亚洲激情成人网| 美女视频网站黄色亚洲| 99在线精品观看| 亚洲视频久久| 国产一区二区久久久| 免费欧美在线视频| 欧美人成网站| 久久成人人人人精品欧| 久久久久国产精品午夜一区| 91久久精品国产91性色tv| 99精品久久| 黄色成人在线网址| 亚洲国产mv| 国产精品色午夜在线观看| 久久九九国产精品| 欧美丰满高潮xxxx喷水动漫| 亚洲欧美亚洲| 久久色中文字幕| 亚洲欧美精品伊人久久| 久久久久久穴| 亚洲欧美成人精品| 久久蜜桃av一区精品变态类天堂| 亚洲乱码久久| 午夜一区在线| 亚洲精品黄网在线观看| 亚洲免费影视| 夜夜爽av福利精品导航| 香蕉久久久久久久av网站| 亚洲伦伦在线| 欧美中文字幕| 亚洲一区二区三区视频| 久久婷婷蜜乳一本欲蜜臀| 亚洲在线成人| 欧美精品免费在线| 久久综合婷婷| 国产欧美亚洲一区| 99在线精品观看| 亚洲高清在线视频| 狠狠色狠狠色综合日日小说| 在线午夜精品| 亚洲专区在线| 国产中文一区| 一本久久综合亚洲鲁鲁五月天| 国产一区二区三区精品久久久| 18成人免费观看视频| 亚洲第一精品电影| 国产亚洲欧美一区二区三区| 黄色影院成人| 中国av一区| 欧美成人在线免费视频| 久久久久久久综合色一本| 欧美日韩在线直播| 午夜精品福利一区二区蜜股av| 99亚洲伊人久久精品影院红桃| 一区二区国产精品| 亚洲婷婷国产精品电影人久久| 欧美精品二区三区四区免费看视频| 亚洲高清成人| 性欧美video另类hd性玩具| 国产精品美女久久久免费| 久久国产精品久久久| 亚洲激情一区二区| 国产精品va在线播放| 欧美激情综合五月色丁香| 亚洲高清在线观看| 中日韩高清电影网| 欧美日韩国产美女| 久久久久五月天| 亚洲自拍偷拍麻豆| 亚洲免费在线观看视频| 亚洲美女av电影| 国产精品视频一二三| 国产精品免费区二区三区观看| 亚洲国产女人aaa毛片在线| 一本色道久久综合精品竹菊| 国产伦理精品不卡| 国产精品一区二区在线观看| 国产精品国产a| 亚洲欧美日韩成人高清在线一区| 99视频有精品| 亚洲网在线观看| 在线观看日韩| 国产精品白丝黑袜喷水久久久 | 噜噜噜噜噜久久久久久91 | 亚洲人成网在线播放| 香蕉成人伊视频在线观看| 韩日视频一区| 在线日韩一区二区| 性感少妇一区| 亚洲综合日韩| 亚洲综合视频1区| 性感少妇一区| 尤物精品在线| 欧美日韩中文字幕| 欧美在线观看视频在线| 亚洲激情视频在线播放| 午夜精品久久| 亚洲日本成人网| 国产欧美精品xxxx另类| 久久综合给合久久狠狠狠97色69| 亚洲精选大片| 久久网站免费| 亚洲欧美三级伦理| 亚洲人成亚洲人成在线观看| 国产欧美日韩视频在线观看| 欧美激情亚洲视频| 久久狠狠亚洲综合| 亚洲视频视频在线| 欧美黄色成人网| 久久激情视频久久| 亚洲免费在线| 日韩一区二区免费看| 伊人婷婷久久| 国产视频一区欧美| 国产精品白丝av嫩草影院 | 久久精品亚洲一区二区| 99成人在线| 亚洲第一精品夜夜躁人人爽| 国产精品久久久久久久久免费桃花 | 老鸭窝亚洲一区二区三区| 亚洲一二三区精品| 亚洲免费av电影| 亚洲激情在线激情| 尤物精品在线| 禁久久精品乱码| 国内精品免费午夜毛片| 国产日韩在线视频| 国产欧美日韩| 国产女人水真多18毛片18精品视频| 欧美日韩和欧美的一区二区| 牛牛国产精品| 欧美成ee人免费视频| 欧美1区3d| 男女视频一区二区| 美女诱惑一区| 欧美成人xxx| 欧美黄色免费网站| 欧美激情视频在线播放| 免费日韩成人| 亚洲小少妇裸体bbw| 中文欧美在线视频| 亚洲视频欧洲视频| 亚洲综合导航| 欧美一区二区三区免费观看| 欧美一区不卡| 久久久久久日产精品| 久久综合亚州| 亚洲国产精品激情在线观看| 91久久精品美女| 9国产精品视频| 亚洲一区二区三区在线| 亚洲一区二区三区四区中文 | 亚洲欧美成aⅴ人在线观看| 亚洲午夜在线视频| 欧美主播一区二区三区美女 久久精品人| 亚洲欧美清纯在线制服| 久久av老司机精品网站导航| 久久久久国产精品午夜一区| 欧美xx视频| 国产精品剧情在线亚洲| 国产亚洲视频在线观看| 亚洲国产日韩欧美在线动漫| 99精品国产一区二区青青牛奶 | 亚洲国产天堂网精品网站| 99视频精品在线| 小黄鸭精品aⅴ导航网站入口| 久久国产欧美日韩精品| 亚洲第一伊人| 亚洲欧美成人一区二区三区| 久久久久久久综合狠狠综合| 欧美激情一区二区久久久| 国产精品美女www爽爽爽视频| 国模套图日韩精品一区二区| 亚洲娇小video精品| 午夜精品电影| 欧美黑人多人双交| 亚洲专区免费| 欧美激情一区二区三级高清视频| 国产精品中文字幕在线观看| 亚洲国产日本| 久久精品中文字幕一区| 亚洲美女性视频| 久久久久免费| 国产酒店精品激情| 亚洲美女在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩亚洲国产精品| 久久中文字幕一区二区三区| 国产精品手机视频| 日韩网站在线看片你懂的| 久久亚洲精品伦理| 亚洲午夜羞羞片| 欧美日韩一区二区视频在线观看| 在线观看一区| 久久综合久色欧美综合狠狠 | 免费欧美在线视频|