关于栈上的单体结构
来源:互联网 发布:读屏软件下载 编辑:程序博客网 时间:2024/04/28 21:28
{
public :
virtual int * create(){return new int;}
};
我定义了这样一个对象,如果希望这个对象实现一个单体模式,那么常用的就是在堆上构建,如:在内部这么写
class createFun
{
public :
static createFun* _instance(){
static createFun* s_instance = null;
if(!s_instance)
s_instance = new createFun;
return s_instance;
}
static int * create(){return new int;}
};
调用时可以这样 createFun::_instance()->create();在全局架构这样写是可以的,但是如果我希望在局部构建出一个单体,怎么办?
static 定义的全局变量只能在定义的地方使用,可以起到保护作用,所以我们如果在局部构建单体(全局),如果直接写createFung_Create;安全性就不太好了。
当然我可以这么写:
namespace {
static createFun g_Create;
}
好了这样做可以实现局部全局变量,单从设计模式和实际使用,这样写不方便封装和管理,我们希望在对象内部定义一个单体的模型,可以这么写:
class createFun
{
public :
virtual int * create(){return new int;}
static createFun s_singleCreate;
};
createFun createFun::s_singleCreate;
//为方便子类的通用获取单体,可以写这样一个宏
#define BUILDER(F) & F::s_singleCreate
可以这样使用
createFun *a = BUILDER(createFun);
OK,我们也把这样一类对象指针放到一个数组或者容器中进行管理,读过设计模式应该可以理解。
- 关于栈上的单体结构
- 关于 创建 只能 实例化两个 对象的单体类
- 爬虫(二)-关于单体爬虫的设计问题
- 关于游戏引擎结构上的思考
- 一个通用的单体模板
- 结构上的算法----栈和队列
- C++单体模式的几个总结
- 单体测试的代码覆盖率工具cobertura
- 单体测试书的检查要点
- c++中单体模式的实现
- boost中serialization模块的单体类
- Unity3d C# 脚本单体模式的实现
- fm单体声和立体声的切换
- js的单体内置对象Math
- 微服务到单体架构的演变
- 基于Qt_Test的单体测试方法(二)
- C++里的单体类实现
- 关于结构的用法
- meta标签让搜索引擎搜索到你的网站
- 计算机网络之无线局域网
- context详解
- axureRP7.0基础入门到精通教程
- JUnit4中的 Annotation(注解、注释)
- 关于栈上的单体结构
- 数据结构与算法分析(c++版) #9 队列
- git 理解
- jquery的$().each,$.each的区别
- Linux命令行快捷键
- [论文阅读]词汇树 Scalable Recognition with a Vocabulary Tree
- 欢迎使用CSDN-markdown编辑器
- 转 e文 jvm 内存分配总结
- Spring获取XML