C++分析研究  
C++
日历
<2014年3月>
2324252627281
2345678
9101112131415
16171819202122
23242526272829
303112345
统计
  • 随笔 - 92
  • 文章 - 4
  • 评论 - 4
  • 引用 - 0

导航

常用链接

留言簿

随笔档案

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

  单件模式是一种用于确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享时的程序设计方法(根据实际情况,可能需要几个类实例)。在某些情况下,这种程序设计方法是很有用处的 www.lefeng123.com
  Singleton模式的实现基于两个要点:
  1)不直接用类的构造函数,而另外提供一个Public的静态方法来构造类的实例。通常这个方法取名为Instance.Public保证了它的全局可见性,静态方法保证了不会创建出多余的实例。
  2)将类的构造函数设为Private,即将构造函数"隐藏"起来,任何企图使用构造函数创建实例的方法都将报错。这样就阻止了开发人员绕过上面的Instance方法直接创建类的实例。
  #include <iostream>
  #include <cassert>
  using namespace std;
  template<typename T>
  class Singleton
  {
  public:
  static T *getInstancePtr()
  {
  if (m_Instance == NULL) {
  m_Instance = new T;
  }
  return m_Instance;
  }
  static T& getInstance()
  {
  assert(m_Instance);
  return (*m_Instance);
  }
  private:
  Singleton(){};
  static T *m_Instance;
  };
  template<typename T> T * Singleton<T>::m_Instance = NULL;
  class A
  {
  public:
  void display(){cout《"A is display"《endl;}
  };
  int main()
  {
  /*Singleton<int>::getInstancePtr();
  cout《Singleton<int>::getInstance()《endl;
  Singleton<int>::getInstance()=5;
  cout《Singleton<int>::getInstance()《endl;*/
  A* p=Singleton<A>::getInstancePtr();
  p->display();
  return 0;
  }

posted on 2014-03-21 21:31 HAOSOLA 阅读(208) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © HAOSOLA Powered by: 博客园 模板提供:沪江博客
PK10开奖 PK10开奖