【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

有过面试经验的朋友,或者对设计模式有点熟悉的朋友,都会对单件模式不陌生。对很多面试官而言,单件模式更是他们面试的保留项目。其实,我倒认为,单件模式算不上什么设计模式。最多也就是个技巧。

单件模式要是用C++写,一般这么写。

#include <string.h>
#include <assert.h>class object
{
public:static class object* pObject;static object* create_new_object(){if(NULL != pObject)return pObject;pObject = new object();assert(NULL != pObject);return pObject;}private:object() {}~object() {}
};class object* object::pObject = NULL;

单件模式的技巧就在于类的构造函数是一个私有的函数。但是类的构造函数又是必须创建的?怎么办呢?那就只有动用static函数了。我们看到static里面调用了构造函数,就是这么简单。

int main(int argc, char* argv[])
{object* pGlobal = object::create_new_object();return 1;
}

上面说了C++语言的编写方法,那C语言怎么写?其实也简单。大家也可以试一试。

typedef struct _DATA
{void* pData;
}DATA;void* get_data()
{static DATA* pData = NULL;if(NULL != pData)return pData;pData = (DATA*)malloc(sizeof(DATA));assert(NULL != pData);return (void*)pData;
}

C语言和设计模式(之单件模式)相关推荐

  1. 设计模式之单件模式(Singleton Pattern)

    一.单件模式是什么? 单件模式也被称为单例模式,它的作用说白了就是为了确保"该类的实例只有一个" 单件模式经常被用来管理资源敏感的对象,比如:数据库连接对象.注册表对象.线程池对象 ...

  2. php设计模式总结-单件模式

    一.单件模式 英文叫做sington.其他语言中有叫做单例模式,其实都是一样的道理.保证只会出现单个实例,所以是单例.翻译成单件,永远只会产生一件,呵呵. 还有翻译成单元素模式.其实关键是看这个英文比 ...

  3. [Java基础] 设计模式之单件模式

    写在前面 作者简介:鲸海鹿林 博客主页:鲸海鹿林的主页 名言警句:keep calm and carry on 本系列参照HeadFirst系列设计模式这本书,换言之,是 HeadFirst设计模式这 ...

  4. 在王者荣耀角度下分析面向对象程序设计B中23种设计模式之单件模式

    · 单件模式在王者荣耀中的应用 · 一.简述 今年春节王者荣耀出了一个叫做"王者快跑"的限时玩法,许多玩家都很喜欢这个游戏模式.不同于5V5的王者地图,这个地图是一个跑道中途有很多 ...

  5. 设计模式:单件模式(Singleton Pattern)

    作者:TerryLee  创建于:2005-12-09 出处:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html  收录于:2013- ...

  6. 设计模式学习---单件模式

    一. 单例(Singleton)模式 单例模式的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一实例. 单例类必须给所有其它对象提供这一实例. 单例模式应用: 每台计算机可以有若干个打印机 ...

  7. C语言和设计模式(访问者模式)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 不知不觉当中,我们就到了最后一种设计模式,即访问者模式.访问者模式,听上去复杂一些.但是,这种 ...

  8. C语言和设计模式(桥接模式)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在以往的软件开发过程中,我们总是强调模块之间要低耦合,模块本身要高内聚.那么,可以通过哪些设计 ...

  9. C语言和设计模式(代理模式)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 代理模式是一种比较有意思的设计模式.它的基本思路也不复杂.举个例子来说,以前在学校上网的时候, ...

  10. C语言和设计模式(状态模式)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 状态模式是协议交互中使用得比较多的模式.比如说,在不同的协议中,都会存在启动.保持.中止等基本 ...

最新文章

  1. tf.variable_scope 参数
  2. 全球Python调查报告:Python 2正在消亡,PyCharm比VS Code更受欢迎
  3. 孔子绝粮于陈蔡子贡孔子问答节选(白话)
  4. c程序设计语言用什么编译器,什么是编译器(编程软件)
  5. python学习笔记(四):函数
  6. [ZJOI2010]网络扩容[网络流24题]
  7. golang搭建微服务遇到的问题(不断更新)
  8. python中什么是按位取反_js中怎么理解按位取反?
  9. NSRegularExpression iOS自带的正则表达式
  10. java多窗口,主编处理java代码怎么实现多个窗口
  11. lingo12软件下载及lingo语言入门资源
  12. Spring Cloud Ribbon
  13. 证件照怎么裁剪?国考证件照的尺寸是多少?
  14. Jdbc结果集Map映射
  15. 从外包公司到今日头条offer,吐血整理
  16. 数据采集,网站批量自动采集数据
  17. OpenCV参考手册之Mat类详解(三)
  18. 为Web前端开发者准备的免费PSD资源网站
  19. Spring Boot(二): 集成Mybatis
  20. 详解 Benders 分解与一个算例的 python 代码

热门文章

  1. 入行AI最需要的五大技能
  2. SDN时代更需要有保障的网络
  3. iOS开发之mac上搭建openfire服务器
  4. 解决KMPlayer 播放RMVB 一直是快进的问题
  5. 平衡二叉树【学习笔记】
  6. bzoj4558[JLoi2016]方 容斥+count
  7. 几个常用的CSS3样式代码以及不兼容的解决办法
  8. 解析IPostBackEventHandler和WebForm的事件机制
  9. 文件操作--设置文件属性、获取文件属性
  10. C++提高部分_C++类模板成员函数类外实现---C++语言工作笔记092