C言語実現設計モデルの一例モデル
984 ワード
面接経験のある友人や、デザインモデルに詳しい友人は、単例モデルに慣れていません.多くの面接官にとって、単品モデルは面接の保留項目です.実は、単品モードはデザインモードとは言えないと思います.せいぜいテクニックです.
単純な単例モード(マルチスレッドやreleaseを考慮しない)はC++で書くと、一般的にそう書きます.
単純な単例モード(マルチスレッドや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;