工厂设计模式问题

时间:2012-07-13 05:43:31

标签: c++ factory-pattern

假设有如下工厂。我想知道是否可以不包含ObjectA.h和ObjectB.h。

目录结构
工厂

| -----对象A

| -----对象B

由于我不想在子目录中包含头文件,有没有办法这样做? 如果有一个新的objectC,则不需要修改工厂类。如果类型是“TypeC”,它将自动创建ObjectC。

#include "ObjectA.h"
#include "ObjectB.h"

object* create(const string& type)
{
    if (type == "typeA")
    {
       return new ObjectA();
    }
    else
    {
       return new ObjectB();
    }
};

1 个答案:

答案 0 :(得分:1)

是的,将实现分离到一个实现文件,只包含那里的文件,只提供标题中的函数原型。

实际致电new ObjectA();new ObjectB(); 以在调用网站中包含这些定义。

//factory.h
object* create(const string& type);

//factory.cpp
#include "factory.h"
#include "ObjectA.h"
#include "ObjectB.h"

object* create(const string& type)
{
    if (type == "typeA")
    {
       return new ObjectA();
    }
    else
    {
       return new ObjectB();
    }
};