歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言和設計模式(之單件模式)

C語言和設計模式(之單件模式)

日期:2017/3/1 10:46:38   编辑:Linux編程
有過面試經驗的朋友,或者對設計模式有點熟悉的朋友,都會對單件模式不陌生。對很多面試官而言,單件模式更是他們面試的保留項目。其實,我倒認為,單件模式算不上什麼設計模式。最多也就是個技巧。

單件模式要是用C++寫,一般這麼寫。

  1. #include <string.h>
  2. #include <assert.h>
  3. class object
  4. {
  5. public:
  6. static class object* pObject;
  7. static object* create_new_object()
  8. {
  9. if(NULL != pObject)
  10. return pObject;
  11. pObject = new object();
  12. assert(NULL != pObject);
  13. return pObject;
  14. }
  15. private:
  16. object() {}
  17. ~object() {}
  18. };
  19. class object* object::pObject = NULL;
單件模式的技巧就在於類的構造函數是一個私有的函數。但是類的構造函數又是必須創建的?怎麼辦呢?那就只有動用static函數了。我們看到static裡面調用了構造函數,就是這麼簡單。
  1. int main(int argc, char* argv[])
  2. {
  3. object* pGlobal = object::create_new_object();
  4. return 1;
  5. }
上面說了C++語言的編寫方法,那C語言怎麼寫?其實也簡單。大家也可以試一試。
  1. typedef struct _DATA
  2. {
  3. void* pData;
  4. }DATA;
  5. void* get_data()
  6. {
  7. static DATA* pData = NULL;
  8. if(NULL != pData)
  9. return pData;
  10. pData = (DATA*)malloc(sizeof(DATA));
  11. assert(NULL != pData);
  12. return (void*)pData;
  13. }
Copyright © Linux教程網 All Rights Reserved