您的位置:首页 > 编程语言 > C语言/C++

C语言单件模式

2014-02-27 16:33 183 查看
转自:http://blog.csdn.net/feixiaoxing/article/details/7071202

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

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

[cpp] view
plaincopy

#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里面调用了构造函数,就是这么简单。

[cpp] view
plaincopy

int main(int argc, char* argv[])

{

object* pGlobal = object::create_new_object();

return 1;

}

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

[cpp] view
plaincopy

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: