歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 在Linux下使用單件Singleton模式

在Linux下使用單件Singleton模式

日期:2017/3/1 10:20:01   编辑:Linux編程

1. Singleton.h文件

  1. /*
  2. * Singleton.h
  3. */
  4. #ifndef SINGLETON_H_
  5. #define SINGLETON_H_
  6. #include <assert.h>
  7. template <typename T> class Singleton
  8. {
  9. protected:
  10. static T* mSingleton;
  11. public:
  12. Singleton()
  13. {
  14. assert(!mSingleton);
  15. mSingleton=static_cast< T*>(this);
  16. }
  17. ~Singleton()
  18. {
  19. assert(mSingleton);
  20. delete mSingleton;
  21. mSingleton=0;
  22. }
  23. static T* getSingletonPtr()
  24. {
  25. assert(!mSingleton);
  26. return mSingleton;
  27. }
  28. static T& getSingleton()
  29. {
  30. assert(!mSingleton);
  31. return *mSingleton;
  32. }
  33. };
  34. #endif /* SINGLETON_H_ */

2. 類SubClass繼承並實例化模板類Singleton

  1. /*
  2. * SubClass.h
  3. */
  4. #ifndef SUBCLASS_H_
  5. #define SUBCLASS_H_
  6. #include "Singleton.h"
  7. #include <iostream>
  8. using namespace std;
  9. class SubClass:public Singleton<SubClass>
  10. {
  11. public:
  12. SubClass();
  13. virtual ~SubClass();
  14. inline void Show()
  15. {
  16. static int s=0;
  17. s++;
  18. cout<<"s===="<<s<<endl;
  19. }
  20. };
  21. #endif /* SUBCLASS_H_ */
  22. /*
  23. * SubClass.cpp
  24. */
  25. #include "SubClass.h"
  26. template<> SubClass* Singleton<SubClass>::mSingleton=0;
  27. SubClass::SubClass()
  28. {
  29. }
  30. SubClass::~SubClass()
  31. {
  32. }

3. 使用函數SubClass::Show()

#include "SubClass.h"

SubClass::getSingletonPtr()->Show();

Copyright © Linux教程網 All Rights Reserved