【从cocos2d-x学习设计模式】第一阶段:辛格尔顿

本文详细介绍了单例模式的基本概念、代码实现、原理分析及在Cocos2d-x框架中的具体应用。重点讨论了单例模式在Director组件中的体现,并列举了多个相关类如TextureCache、SpriteFrameCache等同样采用了单例模式。通过深入剖析,读者可以更好地理解单例模式在游戏开发领域的高效运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式,它总结了前辈在许多方案重用代码。它是一个想法。

因为我们爱cocos2d-x,然后我们从去cocos2d-x在设计模式中,右一起学习!本篇解释未来辛格尔顿。

提cocos2d-x中间Director。我相信你应该很熟悉,使用就是利用了单例模式。


1. 什么是单例模式


单例模式是一种经常使用的软件设计模式。在它的核心结构中仅仅包括一个被称为单例类的特殊类。通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问,从而方便对实例个数的控制并节约系统资源。假设希望在系统中某个类的对象仅仅存在一个,单例模式是最好的解决方式。


2. 实例代码


看完上面的概念,会不会有点模糊呢?没事,咱们来看一段单例模式最主要的代码。

public class Singleton
{
public:

//全局訪问点
static Singleton* Singleton::getInstance()
{
   if(!m_Singleton)
  {
     m_Singleton = new Singleton();
   }
   return m_Singleton;
}

private:

//静态变量实例
static Singleton* m_Singleton = NULL;

//构造函数初始化
Singleton(); 

}

3. 深入分析


(1)因为每次使用newkeyword来实例化Singleton类时,都会产生一个新对象,为了保证Singleton实例的唯一性。我们须要禁止类的外部直接使用new来创建对象,因此将Singleton的构造函数的可见性设为private。


(2)类外部无法使用new来创建对象,我们须要在Singleton的内部创建,可见性仅仅对类外有效。因此。我们能够在Singleton中创建并保存这个唯一实例。为了让外界能够訪问这个唯一实例。须要在Singleton中定义一个静态的Singleton类型的私有成员变量。


(3)为了保证成员变量的封装性,我们将Singleton类型的m_Singleton对象的可见性设置为private。为了让外界使用该成员变量以及实例化该成员变量。我们须要设置一个公有的静态方法。


4. 单例模式在cocos2d-x的Director中的体现


我们来看一下Director用到单例模式的源码:

static DisplayLinkDirector *s_SharedDirector = nullptr;
Director* Director::getInstance()
{
    if (!s_SharedDirector)
    {
        s_SharedDirector = new DisplayLinkDirector();
        s_SharedDirector->init();
    }

    return s_SharedDirector;
}


有兴趣的小伙伴。能够去查看一下Director的源码,性质上是一样的。

当然不止Director中用到了单例模式,TextureCache,SpriteFrameCache等等也用途。



版权声明:本文博客原创文章。博客,未经同意,不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值