有没有高手告诉我getinstance()这个函数是干什么的啊?

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:49:35
请看下面程序:
#pragma once

#include "person.h"
#include <list>
class manage
{
public:
static manage *getinstance();
void addperson(person*);
void delperson(const char*);
void delperson(size_t);
void printall();
void save();
void setfilepath(const char *);
void reloadfile();
const char *getfilepath();
bool editproperty(const char*);
static void delinstance();
private:
char filepath[256];
manage();
static manage *m;
std::list<person*> plist;
};

#include "StdAfx.h"
#include "manage.h"
#include "person.h"
#include <iostream>
#include <fstream>
#include <list>
using namespace std;

manage *manage::m = NULL;

manage::manage(void)
{
strcpy(filepath, "c:\\data.txt");
reloadfile();
}

mana

就是返回一个manage对象。返回的这个manage*是 static的, 所以实际上你调用多次返回的是同一个对象。

一般的累的使用方式是先new一个,或者在栈上声明一个对象 ,每部分的调用用的都是一个新的对象。而这个类需要用的时候就 getinstance就返回了程序中唯一的manage对象,这样确保每次使用的都是这一个对象, 可能是为了性能问题,也可能是这里面有什么操作需要占用文件所以不能开多个, 不管怎么说其实这个跟使用者关系不大, 差别就是1.用之前通过getinstance得到对象而不要定义自己的 2。用完之后别delete

一种设计模式-单例模式(Singleton)的简单实现
就是你的manager类只能初始化一个对象
getInstance()返回那个对象的指针
具体你可以翻翻设计模式的书
推荐四人帮(GoF)的版本
另外还有大话设计模式也不错

这个是单身模式。
也即这个类仅仅维护一个实例对象,单身模式的意思是,一个类保持始终是一个对象,外界调用无法自己另行通过构造器实例新对象。
单身设计模式,你去查查,会明白的。