简单工厂模式
适用场景
适用于根据特定条件创建相应子类的情景,添加新功能时只要添加一个子类,再在工厂类中添加相应的条件分支即可,不需要修改客户端代码
代码示例
基类和子类
class WebPageCallResponse
{
public:
virtual void service(HttpPacketRequest* request, HttpPacketResponse* response) = 0;
protected:
WebPageCallResponse();
virtual ~WebPageCallResponse();
};
class IndexCallResponse : public WebPageCallResponse
{
public:
void service(HttpPacketRequest* request, HttpPacketResponse* respons);
};
class FaviconCallResponse : public WebPageCallResponse
{
public:
void service(HttpPacketRequest* request, HttpPacketResponse* respons);
};
工厂类
class WebResponseFactory
{
public:
static WebResponseFactory* factoryInstance();
WebPageCallResponse* webPagePesponseInstance(const QString& pageName);
protected:
WebResponseFactory() {
}
private:
static WebResponseFactory m_instance;
};
WebResponseFactory* WebResponseFactory::factoryInstance()
{