菜鸟问一个简单的有关“设计模式”的问题。
一直做嵌入式方面的工作,后来发现 c/c++/数据结构算法/设计模式 方面一直是技术短板。
今年的大部分业余时间,准备用来深入学习一下这些内容,今早坐公交车的时候,
看了下设计模式里面的“单例(Singleton)模式”,中午下班用c++写了一下,大家看看这么写有什么问题。
欢迎挖苦指点。(至于 设计模式 无用论方面的就不用讨论了。-_-)
[解决办法]
static CSyncCriSec sync;不对,不应该这么加锁
[解决办法]
单例,,
这种用法只想到了内存池之类的..
其他时候只是为了控制全局变量初始化顺序的一个手段而已.
所以,无法提什么意见.
唯一的,c++里面不用推荐NULL,直接用0代替.
[解决办法]
基本OK 没什么问题 加锁代码也没问题
[解决办法]
单例模式其实没必要加锁,在程序启动时初始化一次就ok了
[解决办法]
有个疑问:
你把标志_instance放在模板里了,在创建对象时可以通过Instance函数来改变_instance,但在析构T实例的时候又怎么把_instance重新置为NULL呢?
不过不管,那么当你析构了第一个T实例之后系统里就没有T的实例了,再想重建一个如何做呢?
[解决办法]
呃,又打错字......最后那行开头是“如果不管”
[解决办法]
我csdn博客里刚好也有个Singleton模式的实现。呵呵
[解决办法]
#include <stdio.h>template <typename T>class CSingleton {public: static T* Instance() { static T instance; return &instance; }};void main() { int* p = CSingleton<int>::Instance(); printf("please input a int number: "); scanf("%d", p); printf("the number is: %d", *p);}
[解决办法]
#include <stdio.h>template <typename T>class CSingleton {public: static T* Instance() { static T instance; return &instance; }};void main() { int* p = CSingleton<int>::Instance(); printf("please input a int number: "); scanf("%d", p); printf("the number is: %d", *p);}
[解决办法]
单例说白了就是全局只维护一个对象.
作用跟全局变量,静态变量一样的... ...
[解决办法]
楼主,咱俩写的好像啊…就是锁有点区别
[解决办法]
好久木用C++了, 还是喜欢一个函数一个函数的写, 写C++也不喜欢整复杂的东西, 就会用个普通的类, 公有函数, 私有函数, 没了= =.
[解决办法]
设计模式 书是有一本从来没看过
------解决方案--------------------
有关单例模式的线程安全实现 网上许多帖子的。
此例代码与楼主的类似
http://blog.csdn.net/weiqubo/article/details/7475822