cocos2dx笔记之单例模式

使用单例模式的优缺点

优点:

       1)简单易用,限制一个类只有一个实例,可以降低创建多个对象可能会引起的内存问题的风险,包括内存泄漏、内存占用问题。

缺点:

        2)单例模式因为提供了一个全局的访问点,你可以在程序的任何地方轻而易取地访问到,这本身就是一种高耦合的设计。一旦单例改变以后,其它模块都需要修改。另外,单例模式使得对象变成了全局的了。学过面对对象编程的人都知道,全局变量是非常邪恶的,要尽量不要使用。而且单例模式会使得对象的内存在程序结束之前一直存在,在一些使用GC的语言里面,这其实就是一种内存泄漏,因为它们永远都不到释放。当然,也可以通过提供一些特殊的方法来释放单例对象所占用的内存,比如前面提到的XXXCache对象,都有相应的Purge方法。最后,cocos2dx里面实现的单例,99%都不是线程安全的。

在讨论优缺点的时候,读者想必也看出来了,缺点比优点多多了。这是给大家提个醒,以后使用单例模式的时候要谨慎,不要滥用。因为此模式最容易被滥用。只有真正符合单例模式应用场景的时候,才能考虑。不要为了访问方便,就把任何类都弄成单例,这样,到最后,你会发现你的程序里面就只剩下一堆单例和工厂了。

此外,单例模式正在消减,比如ActionManager和TouchDispatcher在cocos2d1.0之前也是单例,现在变成了Director类的属性了。而且Riq(cocos2d-iphone的作者)也有在邮件中提到,以后Director对象也会变成非单例,并且允许一个游戏中创建多个游戏窗口。

       大多数时候,我们在考虑实现一个功能的时候,首先想到的一定不要是单例。单例就像全局变量,它会散布在你的程序的各个地方。推荐尽可能地用类函数,名字空间+全局函数,或者内部类来解决。
                                                                                             --抄录自《子龙山人:Cocos2D-X设计模式:单例模式》
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值