870920 Menu

JUCE类库Singleton单例模式

某个类要实现线程安全的Singleton单例模式,可通过预定义的单例宏来实现。步骤有3:

1、类中声明。


类中声明此语句后,该类自动拥有以下3个静态函数和1个普通成员函数:
 getInstance() 如果尚未创建本类的对象,则创建。如果已创建,则返回之
 getInstanceWithoutCreating()返回已经创建的本类对象,如果尚未创建,则返回空指针
 deleteInstance() 销毁已创建的本类对象。如果已销毁或尚未创建,则什么也不做
 clearSingletonInstance()普通成员函数。如果已经创建了本类对象,则将其置为空指针

2、析构清理。单例类的类实现,析构函数中添加:

3、全局声明。类实现析构函数之后添加一个宏。注意:该宏不属于任何函数,也不属于该类,是全局性的(即:该宏位于cpp源文件的析构函数与另一个成员函数的实现之间):

单例对象的创建和销毁不采用常规方式,事实上,根本无需显式创建单例对象。需要该类完成某个功能时,直接类名:: getInstance()->成员函数; 即可。当然,也可采用下面的语句获取单例对象:

销毁单例对象,通常在程序主体类的systemRequestedQuit()函数中完成:

示例代码:

以上是线程安全的单例类。如果单例类不运行于多线程环境,则可在类的头/源文件中使用速度更快的juce_DeclareSingleton_SingleThreaded和juce_ImplementSingleton_SingleThreaded宏。