四种常见的单例:1、没有构造函数(DEFINE_SINGLETON_DEFAULT);2、有构造函数,构造函数没有参数(DEFINE_SINGLETON_CONSTRUCT_NO_PARAM);3、有构造函数,构造函数有没有参数版本(DEFINE_SINGLETON_CONSTRUCT_WITH_DEFAULT);4、有构造函数,构造函数都有参数(DEFINE_SINGLETON_CONSTRUCT);通过宏定义巧妙实现,使用也很方便!