蜗牛的家
男儿当自强
C++博客
首页
新文章
新随笔
聚合
管理
posts - 48, comments - 21, trackbacks - 0
C++设计模式-Singleton
意图:
保证一个类仅有一个实例,并提供一个访问他的全局访问点
适用:
当类只能有一个实例,而且客户可以从一个众所周知的的访问点访问它时
当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时
UML图:
解析:提供唯一的类的实例,但多线程下不一定安全
//
test.h
/**/
////////////////////////////////////////////////////////////////////////
//
class
Singleton
{
public
:
Singleton()
{}
~
Singleton()
{}
//
静态成员函数,提供全局的访问接口
static
Singleton
*
GetInstancePtr();
void
test();
private
:
//
静态成员变量,提供全局的唯一实例
static
Singleton
*
m_pStatic;
}
;
//
test.cpp : Defines the entry point for the console application.
//
#include
"
stdafx.h
"
#include
<
iostream
>
#include
"
stdlib.h
"
#include
"
test.h
"
using
namespace
std;
/**/
////////////////////////////////////////////////////////////////////////
//
Singleton
*
Singleton::m_pStatic
=
NULL;
Singleton
*
Singleton::GetInstancePtr()
{
if
(NULL
==
m_pStatic)
{
m_pStatic
=
new
Singleton;
}
return
m_pStatic;
}
void
Singleton::test()
{
cout
<<
"
test\n
"
;
}
/**/
////////////////////////////////////////////////////////////////////////
//
int
main(
int
argc,
char
*
argv[])
{
//
直接通过全局访问点访问
Singleton::GetInstancePtr()
->
test();
system(
"
pause
"
);
return
0
;
}
另一种与其相似的模式为monostate模式,将类中的所有数据声明为static即保持数据的状态唯一
posted on 2008-08-17 01:37
黑色天使
阅读(248)
评论(0)
编辑
收藏
引用
所属分类:
设计模式
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
decorator模式
MVC模式理解——当年给我一个browser多好(转)
C++设计模式-趣解
C++设计模式-visitor
C++设计模式-Memento
C++模式-Iterator
C++设计模式-Observer
C++设计模式-Command
C++模式-FlyWeight
C++设计模式-ChainOfResponsibility
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2008年8月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
C\C++(8)
Hacker(1)
STL
VC&MFC(4)
操作系统(1)
多进程&多线程
流媒体开发
内存管理技术(2)
软件工程(1)
设计模式(20)
数据结构&算法(2)
网络开发(3)
随笔档案
2011年4月 (1)
2011年3月 (2)
2009年7月 (1)
2009年6月 (2)
2009年3月 (1)
2009年2月 (3)
2009年1月 (3)
2008年12月 (5)
2008年11月 (1)
2008年10月 (3)
2008年9月 (3)
2008年8月 (23)
文章档案
2011年3月 (1)
2009年6月 (1)
2008年11月 (1)
搜索
最新评论
1. re: C++设计模式-Observer
评论内容较长,点击标题查看
--no7dw
2. re: YUV格式详细解释与FFMPEG的关系
评论内容较长,点击标题查看
--windsome
3. re: 键盘过滤驱动源代码
@soul
再怎么懒也应该自己实现一部分吧
--黑色天使
4. re: 键盘过滤驱动源代码[未登录]
再怎么懒也该加上unload例程吧
--soul
5. re: CHttpDownLoad Beta 1.0
评论内容较长,点击标题查看
--tangxinfa
阅读排行榜
1. RGB、YUY2、YUYV、YVYU、UYVY与AYUV(转)(6632)
2. YUV格式详细解释与FFMPEG的关系(4284)
3. 如何检测内存泄漏(转)(3880)
4. memcpy的BUG(2694)
5. CHttpDownLoad Beta 1.0(2314)
评论排行榜
1. CHttpDownLoad Beta 1.0(10)
2. memcpy的BUG(5)
3. 事件模型SOCKET封装(2)
4. 键盘过滤驱动源代码(2)
5. C++设计模式-Observer(1)