浅谈C++设计模式之单例模式

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

  通常我们可以让一个全局变量使得一个对象被访问,但它不能防止客户实例化多个对象,一个***的办法就是让类自身负责保护它的唯一实例,这个类可以保证没有其它实例可以被创建,并且它可以提供一个访问该实例的方法。

  单例模式因为Singleton类封装它的唯一实例,这样它可以严格控制客户怎样访问它以及何时访问它,简单地说就是对唯一实例的受控访问。

  实现原理:将构造函数私有化,只提供一个静态方法来创建一个对象。

  (1) 将构造函数设置成private;

  (2) 声明一个静态的字段,初始化一个实例,返回Singleton对象;

  (3) 用静态方法或静态属性,返回那个唯一的实例

  当然,在对象用多线程时,可能会造成创建多个实例,可以给创建对象的过程加锁。

  • Singleton:定义一个Instance操作

 
 
  1. class Singleton{
  2. public:
  3.     static Singleton* Instance();
  4. protected:
  5.     Singleton(){}
  6.     Singleton(const Singleton &instance){}
  7.     Singleton& operator=(const Singleton &instance){}
  8. private:
  9.     static Singleton* instance;
  10. };
  11. Singleton* Singleton::Instance(){
  12.     if(instance == 0)
  13.         instance = new Singleton;
  14.     return instance;
  15. }
  16. Singleton* Singleton::instance = 0;

  其实,单例模式中最关键的就是把public的构造函数私有化。这样就把构造对象的实例化的权利交给了类本身,让Singleton来控制类的 实例化。当然除了构造函数之外,还需要把类的控制复制函数(拷贝构造函数,赋值运算)私有化,因为客户端没有构造的权利,所以也就没有使用控制复制函数的 权利。

当前题目:浅谈C++设计模式之单例模式
分享地址:http://www.shufengxianlan.com/qtweb/news18/374918.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联