求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
 
 
     
   
    全部     工程实例     标准规范     名校讲义     知识库    
 
 

C语言和设计模式 教程
开篇
单件模式
原型模式
组合模式
模板模式
工厂模式
责任链模式
抽象工厂模式
迭代器模式
外观模式
代理模式
享元模式
装饰模式
适配器模式
策略模式
中介者模式
建造者模式
桥接模式
观察者模式
备忘录模式
解释器模式
命令模式
状态模式
访问者模式
继承、封装、多态
 
 

单件模式

    您可以捐助,支持我们的公益事业。

金额: 1元 10元 50元

姓名:

邮件:

电话:

公司:

说明:

认证码: 验证码,看不清楚?请点击刷新验证码 必填



 
 捐助

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

单件模式要是用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;
}


    您可以捐助,支持我们的公益事业。

金额: 1元 10元 50元

姓名:

邮件:

电话:

公司:

说明:

认证码: 验证码,看不清楚?请点击刷新验证码 必填



 
 捐助