单例模式 详解

单例模式

简介: 让类只初始化一次, 然后不同的地方都能获取到同一个实例

这是非常常用的一种模式, 系统稍微大一点基本上都会用到. 在系统中, 不同模块的总管理类都已单例模式居多

这里我们不仅使用c++实现单例模式, 也会用python2实现一遍

python代码

想要看更详细的python单例模式的不同写法, 参照: python单例模式的几种写法

python 复制代码
class Singleton(type):

	def __call__(cls, *args, **kwargs):
		if not hasattr(cls, '_instance'):
			cls._instance = super(Singleton, cls).__call__(*args, **kwargs)
		return cls._instance

class Test1(object):

	__metaclass__ = Singleton

	def __init__(self):
		pass


if __name__ == '__main__':
	t1 = Test1()
	t2 = Test1()

	if t1 is t2:
		print 'Singleton'

执行结果

c++代码
cpp 复制代码
class System
{
private:
	static System* _instance;
public:
	static System* get_instance()
	{
		if (not _instance)
			_instance = new System();
		return _instance;
	}
};

System* System::_instance = nullptr;


int main()
{
	System* s1 = System::get_instance();
	System* s2 = System::get_instance();
	if (s1 == s2)
		cout << "singleton!" << endl;
	return 0;
}

执行结果

相关推荐
矛取矛求1 小时前
string接口的深度理解(内附思维导图)
c语言·开发语言·c++·接口·string
点云侠1 小时前
二维椭圆拟合算法及推导过程
开发语言·c++·算法·计算机视觉·matlab
想不到好名字了()2 小时前
负载均衡式在线oj项目开发文档2(个人项目)
linux·网络·c++
欢天喜地小姐姐2 小时前
Ubuntu16.04安装并配置Visual Studio调试C++
c++·visual studio
五味香2 小时前
Linux命令学习,git命令
linux·c语言·开发语言·c++·git·学习·算法
努力学算法的蒟蒻2 小时前
牛客小白月赛104 —— C.小红打怪
c++·算法
七夕先生2 小时前
Qt:QPdfDocument渲染PDF文件时的信息丢失问题
c++·qt·pdf
无敌岩雀2 小时前
C++设计模式结构型模式———代理模式
c++·设计模式·代理模式
埋头编程~3 小时前
【C++】踏上C++学习之旅(五):auto、范围for以及nullptr的精彩时刻(C++11)
java·c++·学习
阿阿越3 小时前
C++ -- 多态与虚函数
c++