广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 4211 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
cxxlman
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x1
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][范例] 以函数指标完美建构 Singleton Pattern

GOF 着作中对 Singleton Pattern 的描述为:保证一个class只有一个实体(Instance),有人觉得 GOF 范例在判断 Instance 是否
已建立降低了效率,有人就把他改为以下的方式来建立

Singleton *Singleton_create()
{
static Singleton m_Instatnce;

return &m_Instatnce;
}

但在多执行绪环境下有 memory leak 的疑虑,若还要加上一大堆执行绪的同步控制,则上面那个高效率的方法就不见了...:(
有两个方法可以解决,一种另弄一个类别来帮忙,如以下的简单示意:


class Singleton
{
static Singleton *_obj; // 存放建构出来的 Singleton 唯一的物件

public:

static Singleton *Create(void);
friend class Factory;
};


class SingletonHelp
{
public:
void SingletonHelp(Singleton **Obj)
{
/* 加一些同步控制....*/

*Obj = new Singleton();
}
};

Singleton::Create(void)
{
static SingletonHelp _Temp(&_obj);

return _obj;
}

但总觉得用了一些非正派的技巧,没法确定是否能完全如己所愿。

另一种则是以下的介绍的范例,藉由函数指标可替换的特性,完全符合 C++ 的规范内:


/*----------- ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



[ 此文章被cxxlman在2008-04-10 17:24重新编辑 ]




献花 x0 回到顶端 [楼 主] From:台湾EDTNS-NET | Posted:2008-04-07 02:50 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.052356 second(s),query:15 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言