C语言 singleton模式
用久了C++,突然看C语言的单例模式实现,记录一下。
C语言的实现很简单,相比C++注意的地方比较多,构造函数是private,只提供public的一个单例实现函数等等。
#include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int SINGLETON; //自定义类型 /* SINGLETON *singleton = NULL; //全局变量, 静态变量也可以,看下面的实现 SINGLETON *getSingleton(void) { if(NULL == singleton) { singleton = (SINGLETON*)malloc(sizeof(SINGLETON)); assert(NULL != singleton); return singleton; } return singleton; } */ //静态变量实现 SINGLETON *getSingleton(void) { static SINGLETON *singleton = NULL; //静态变量 if(NULL == singleton) //确保只要一个实现 { singleton = (SINGLETON*)malloc(sizeof(SINGLETON)); assert(NULL != singleton); return singleton; } return singleton; } int main() { SINGLETON *test1 = getSingleton(); printf("test1 pointer = %p\n", test1); SINGLETON *test2 = getSingleton(); printf("test2 pointer = %p\n", test2); return 0; }