创建型模式由一个对象的接口和一个具体的类组成,该控制类决定在运行的时候该创建那个具体的对象,该模式在应用程序的日志处理中非常有用,比如在写日志的是采用写到文件中还是数据库中.
class Logger
{
virtual void LogError() = 0;
virtual void LogError(CString strErr) = 0;
};
class DBLogger:public Logger
{
public :
void LogError()
{
//do here log
}
void LogError(CString strErr)
{
//do here log
}
};
class FileLogger:public Logger
{
public:
void LogError()
{
//do log here
}
void LogError(CString strErr)
{
//do log here
}
};
class LogFactory
{
private:
LogFactory()
{}
public :
static Logger* GetLogger(int itype)
{
if(itype == 1)
return new DBLogger();
else
return new FileLogger();
}
};
class Log
{
public:
Log()
{
pLog = NULL;
iType = 1;
}
void SetType(int itype)
{
if(itype == iType)
return;
pLog = LogFactory::GetLogger (itype);
iType = itype;
}
void LogError()
{
pLog->LogError();
}
void LogError(CString strError)
{
pLog->LogError(strError);
}
private:
Logger* pLog;
int iType;
};