游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2628|回复: 6

请教Singleton类和静态类的使用区别?

[复制链接]

11

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2006-2-9 02:17:00 | 显示全部楼层 |阅读模式
我的游戏中需要很多唯一的类,比如唯一的地图啦,唯一的主角啦,等等。

前段时间一直用的是Singleton类,即把构造函数私有,再写一个静态函数负责创建唯一的实例。

但是今天突然想,既然是唯一的了,为什么不用静态类呢(即把所有函数和变量都声明为static)?这样引用起来反而方便一些(可以这样用:CSomeClass::SomeFunction(), 而Singleton类只能这样用:CSomeClass::Instance()->SomeFunction())。

但是Singleton类好像使用的人多一些,是一种常见的设计模式。不知这两者使用上还有什么区别,请教各位达人。谢谢!

0

主题

40

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2006-2-9 10:17:00 | 显示全部楼层

Re:请教Singleton类和静态类的使用区别?

静态类不支持虚函数

7

主题

188

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2006-2-9 23:44:00 | 显示全部楼层

Re:请教Singleton类和静态类的使用区别?

静态类破坏封装性

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2006-2-10 01:11:00 | 显示全部楼层

Re:请教Singleton类和静态类的使用区别?

晕,你要CSomeClass::SomeFunction()这样用又何必把它弄成个类呢?直接用namespace不是更方便

1

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2006-2-10 12:39:00 | 显示全部楼层

Re:请教Singleton类和静态类的使用区别?

不写成静态的,主要是不支持虚函数、而且创建和释放无法控制的原因吧

简单一点,比如说CreateDevice函数,可以根据参数创建一个OpenGL或者Direct3D的驱动接口,实际上也是单件的(可以用引用技术来让它看起来不是单件)

这时候不能使用静态对象。

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2006-2-10 14:13:00 | 显示全部楼层

Re:请教Singleton类和静态类的使用区别?

单件可以在第一次调用的时候初始化,静态类好像做不到。
单件可以实现某个接口,由工厂方法给出实例,静态类做不到。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-2-10 15:28:00 | 显示全部楼层

Re:请教Singleton类和静态类的使用区别?

不一样的。。那个叫Monostate模式,去网上搜一下。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 10:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表