关于C++里static成员和singleton模式的疑惑

25 views
Skip to first unread message

Lin Liu

unread,
Jul 25, 2011, 10:58:12 PM7/25/11
to pongba
经常看到这样的类:类里的所有成员、方法都是static类型的,看起来怪怪的。
这样的类和使用singleton模式的类相比,有哪些优缺点呢?

thomas92911

unread,
Jul 25, 2011, 11:21:49 PM7/25/11
to pon...@googlegroups.com
就是披着洋皮的狼,为了不被别人骂太简单。

hugo

unread,
Jul 26, 2011, 12:50:41 AM7/26/11
to pon...@googlegroups.com
是一种预防编程错误的技巧!

--
秋风愁煞梅城别,飘零一人心谁解。纵使天涯流落去,身边也有飞舞蝶。

yuan zhu

unread,
Jul 26, 2011, 2:05:22 AM7/26/11
to pon...@googlegroups.com
你无法控制静态对象成员构造和析构的顺序

lzprgmr

unread,
Jul 26, 2011, 8:51:40 AM7/26/11
to pon...@googlegroups.com
和singleton的区别可能在于对象的状态, 其实有一个模式叫Monostate,你可以google一下,这里有解释其和singeton的区别:


Blog: http://www.cnblogs.com/baiyanhuang/
Douban:http://www.douban.com/people/baiyanhuang/


2011/7/26 yuan zhu <zy49...@gmail.com>

小根 李

unread,
Jul 27, 2011, 1:08:51 AM7/27/11
to TopLanguage
singleton可以作对象使用,作为方法的参数,程序的扩展性会比static 好很多

raof01

unread,
Jul 27, 2011, 11:23:34 PM7/27/11
to TopLanguage
通常很多工具类(或者叫工具箱类)都是用的static方法。但正因为是工具箱,无需保存数据状态,因此基本上没有成员。如果有成员,可能是设计出了问
题;有大量成员----别想了,有人装逼没装好,重构吧。

On Jul 26, 10:58 am, Lin Liu <linli...@gmail.com> wrote:

raof01

unread,
Jul 27, 2011, 11:24:33 PM7/27/11
to TopLanguage
什么错误?如何预防?多线程的话,怎么保证不出错?

On Jul 26, 12:50 pm, hugo <hugoclas...@gmail.com> wrote:
> 是一种预防编程错误的技巧!
>

> 在 2011年7月26日 上午11:21,thomas92911 <thomas92...@gmail.com> 写道:
>
> > 就是披着洋皮的狼,为了不被别人骂太简单。
>

qiaojie

unread,
Jul 27, 2011, 11:43:44 PM7/27/11
to pon...@googlegroups.com
singleton模式的好处有限而陷阱很多,最大的问题在于无法显式的控制singleton对象的构造和析构顺序,在多线程构造的时候还存在陷阱。
所以我一般都用静态类代替singleton,显式的调用Initialize/Destroy来保证确定的构造和析构顺序。

2011/7/26 Lin Liu <linl...@gmail.com>

盗月泉

unread,
Jul 29, 2011, 11:10:38 AM7/29/11
to pon...@googlegroups.com
stingleton也可以实现得复杂一些吧,提供销毁的接口也不难。

Xinyu LIU

unread,
Aug 1, 2011, 10:10:51 PM8/1/11
to pon...@googlegroups.com
Hi,

所谓Utilities,是之也,盖C中全局函数及变量,于C++中,以static类提供而已;
此法为历史遗留问题,如今可用namespace替换之。

singleton模式在C++中以static实现,迨迫不得已而为之,在提供类方法(与之对应为对象方法)的语言中,如Smalltalk,singleton即为类方法。

2011/7/26 Lin Liu <linl...@gmail.com>

经常看到这样的类:类里的所有成员、方法都是static类型的,看起来怪怪的。
这样的类和使用singleton模式的类相比,有哪些优缺点呢?



--
--
Larry, LIU Xinyu
https://sites.google.com/site/algoxy/
https://github.com/liuxinyu95/AlgoXY

Reply all
Reply to author
Forward
0 new messages