歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

有過面試經驗的朋友,或者對設計模式有點熟悉的朋友,都會對單件模式不陌生。對很多面試官而言,單件模式更是他們面試的保留項目。其實,我倒認為,單件模式算不上什麼設計模式。最多也就是個技巧。

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

  1. #include <string.h>   
  2. #include <assert.h>   
  3.   
  4. class object  
  5. {  
  6. public:  
  7.     static class object* pObject;  
  8.       
  9.     static object* create_new_object()  
  10.     {  
  11.         if(NULL != pObject)  
  12.             return pObject;  
  13.   
  14.         pObject = new object();  
  15.         assert(NULL != pObject);  
  16.         return pObject;  
  17.     }  
  18.       
  19. private:  
  20.     object() {}  
  21.     ~object() {}  
  22. };  
  23.   
  24. 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.   
  6. void* get_data()  
  7. {  
  8.     static DATA* pData = NULL;  
  9.       
  10.     if(NULL != pData)  
  11.         return pData;  
  12.   
  13.     pData = (DATA*)malloc(sizeof(DATA));  
  14.     assert(NULL != pData);  
  15.     return (void*)pData;  
  16. }  
Copyright © Linux教程網 All Rights Reserved