Singleton单件设计模式久仰其大名,今天就来实用一把。Loki库使用模板技术实现了泛型的SingletonHolder,咱资源管理类ViewManager就是典型的单件嘛。
typedef Loki::SingletonHolder<ViewManagerImpl
> ViewManagerHolder;
这里ViewManagerImpl是ViewManager的实现,调用ViewManagerHolder.Instance()就会返回一个ViewManagerImpl&。实现细节以后慢慢研究了(有点糊弄自己)。
另外使用智能指针析构会有问题,如下:
shared_ptr p
=
&
ViewManagerHolder.Instance();
程序会抛出异常。SingletonHolder会在程序退出atexit()中析构单件对象,没啥好用智能指针的。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
这里ViewManagerImpl是ViewManager的实现,调用ViewManagerHolder.Instance()就会返回一个ViewManagerImpl&。实现细节以后慢慢研究了(有点糊弄自己)。
另外使用智能指针析构会有问题,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
程序会抛出异常。SingletonHolder会在程序退出atexit()中析构单件对象,没啥好用智能指针的。