设计模式的C++实现之单例模式

单例模式,顾名思义,就是只能由一个实例,那么我们就必须保证

该类不能被复制。

该类不能被公开的创造 。

那么对于C++来说,他的构造函数,拷贝构造函数和他的赋值函数都不能被公开调用。

但对于该私有的构 造函数的构造时机上来说也可以分两种情况来构造:

只有当需要改类的时候去构造(即为懒汉模式)

在程序开始 之前我就先构造好,你到时候直接用就可(即为饿汉模式)

那么我分别来说说这两种模式:

懒汉模式,静态 局部变量只会被初始化一次即第一次执行的时候,其生命周期与程序的生命周期是相同的。这个同样适用于多线程的情况。

class single1
{
public:
    static single1& getInstance()
    {
        static single1 instance;
        return instance;
    }  

    int helloSingle() {return 1;}
private:  

private:
    single1(){};
    single1(const single1&);
    single1& operator=(const single1&);  

};

饿汉模式,但是在main函数外面必须先调用其实例的构造,这个是静态实例的初始化,C/C++会保证其在进入 main函数之前进行。

class single2
{
public:
    static single2* getInstance()
    {
        return mInstance;
    }  

    int helloSingle() {return 1;}  

private:
    static single2* mInstance;  

private:
    single2(){};
    single2(const single2&);
    single2& operator=(const single2&);  

};
single2* single2::mInstance = new single2;

我们运用静态局部变量和静态实例的特性,使得我们的这两种模 式都适用于多线程。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索实例
, 多线程
, 函数
, 静态
, 模式
, 汉克尔函数
, single
, 饿汉式
, 懒汉
, 懒汉模式
饿汉模式
c 单例模式实现、用c 实现单例模式、c 单例模式的实现代码、c 单例设计模式、枚举实现单例模式,以便于您获取更多的相关知识。

时间: 2024-09-17 05:07:14

设计模式的C++实现之单例模式的相关文章

PHP设计模式之工厂模式与单例模式_php技巧

本文实例讲述了PHP设计模式之工厂模式与单例模式实现方法.分享给大家供大家参考,具体如下: 设计模式简单说应对某类问题而设计的解决方式 工厂模式:应对需求创建相应的对象 class factory{ function __construct($name){ if(file_exists('./'.$name.'.class.php')){ return new $name; }else{ die('not exist'); } } } 单例模式:只创建一个对象的实例,不允许再创建实例,节约资源(

《设计模式》学习笔记5——单例模式【高并发拓展】

定义 单例模式又称为单件模式,这个模式大概是设计模式中最好理解的了,我起初就打算从这里开始学,甚至还记过另一篇单例模式学习的笔记. 但是之后跟着<设计模式>这本书系统的学,就索性从第一页开始,而单例模式算是复习,也算是再深入的理解一次. 之所以要这么做,是因为上一次写的没有给出更标准的定义,同时,当时只介绍了基础的懒汉式和饿汉式,对于并发时候的单例却没有涉及,所以这篇学习的重点应当在于高并发时如何保证我们的单例依旧是单例. 单例模式引用书中的定义如下: 单例模式(Singleton Patte

【java设计模式初探0】_单例模式

在java的几十种设计模式中,可能单例模式算是最容易理解的吧!因为不论是目前的我自己,还是偶尔面试的别人,能稍微讲清楚的,基本就是单例模式.什么叫单例模式?顾名思义,就是单一的实例,唯一的实例.也就是说对于某个java类来说,他的实例对象最多只能创建一个. 那么,稍微有点java基础的同学都知道,我们自己创建对象最基本的方式就是使用new关键字,通过类定义的构造器来创建.就比如有这样一个类: public class Earth{ public Earth(){ } } 我们自己创建该类的对象,

设计模式(4)-序列生成器之单例模式

场景:序列生成器 系统中统一的序列生成程序,整个系统统一一套!那么就用单例模式吧! 首先看看单例模式 1)类持有一个自己的实例,而且还是个静态实例. 2)类的构造函数为私有属性. 3)用以获得实例的方法为静态方法. 看看类图 然后看一段试例程序: #include <iostream> using namespace std; class Singleton{ private: Singleton();//注意:构造方法私有 virtual ~Singleton(); static Singl

设计模式(八)之单例模式

线程安全写法: public class Singleton { /* 线程安全推荐写法 */ private Singleton() { } static class SigletonHandler { static Singleton instance = new Singleton(); } public static Singleton getInstance() { return SigletonHandler.instance; } /* 线程安全双check写法 */ privat

JS设计模式 单例模式 模块模式

关于设计模式 先说说什么是设计模式吧.很多人都觉得"设计模式"这东西很玄乎,把Gof四人帮的<Design Patterns>奉为编程圣经,而我却觉得大可不必.设计模式说白了,就是在特定环境下解决某类常见问题的一种套路,按着这种套路去做就会很得心应手.但是,这并不代表这些设计模式是放之四海皆准,更不是说套着设计模式做的东西就一定是最好维护.性能最佳.至高无上的了.就算你不知道什么设计模式,只要思路正确,也能写出设计模式来. 有大师说,设计模式其实是对语言缺陷的一种弥补.这里

C#设计模式(1)——单例模式

原文:C#设计模式(1)--单例模式 一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同时可以给一些初学设计模式的朋友一些参考.首先我介绍的是设计模式中比较简单的一个模式--单例模式(因为这里只牵涉到一个类) 二.单例模式的介绍 说到单例模式,大家第一反应应该就是--什么是单例模式?,从"单例"字面意思上理

android开发设计模式之——单例模式详解_Android

单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到.比如在Android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenHelper)等都会用到单例模式.下面针对一些例子分析一下我们在开发过程中应用单例模式需要注意的点.  一.作用  单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点 二.适用场景 1. 应用中某个实例对象需要频繁的被访问. 2. 应用中每次启动只会存在一个实例.如账

深入解析Java的设计模式编程中单例模式的使用_java

定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 类型:创建类模式 类图: 类图知识点: 1.类图分为三部分,依次是类名.属性.方法 2.以<<开头和以>>结尾的为注释信息 3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见. 4.带下划线的属性或方法代表是静态的. 5.对类图中对象的关系不熟悉的朋友可以参考文章:设计模式中类的关系. 单例模式应该是23种设计模式中最简单的一种模式了.它有以下几个要素: 私有的构