C言語実現設計モデルの一例モデル

984 ワード

面接経験のある友人や、デザインモデルに詳しい友人は、単例モデルに慣れていません.多くの面接官にとって、単品モデルは面接の保留項目です.実は、単品モードはデザインモードとは言えないと思います.せいぜいテクニックです.
単純な単例モード(マルチスレッドやreleaseを考慮しない)はC++で書くと、一般的にそう書きます.
#include 
#include 
 
class object
{
public:
 static class object* pObject;
	
 static object* create_new_object()
 {
 if(NULL != pObject)
			return pObject;
 
		pObject = new object();
		assert(NULL != pObject);
		return pObject;
 }
	
private:
 object() {}
 ~object() {}
};
 
class object* object::pObject = NULL;
                         。               ?    ?      static   。    static         ,      。
int main(int argc, char* argv[])
{
	object* pGlobal = object::create_new_object();
	return 1;
}
     C++       , C     ?     。        。
typedef struct _DATA
{
 void* pData;
}DATA;
 
void* get_data()
{
 static DATA* pData = NULL;
 
 if(NULL != pData)
 return pData;
 
 pData = (DATA*)malloc(sizeof(DATA));
 assert(NULL != pData);
 return (void*)pData;