工厂设计模式问题

factory design pattern issue

本文关键字:问题 设计模式 工厂      更新时间:2023-10-16

假设有一个工厂,如下所示。我想知道是否可以不包括ObjectA.h和ObjectB.h。

目录结构
工厂

|-----ObjectA

|-----ObjectB

既然我不想把头文件包括在子目录中,有什么办法吗?如果有一个新的objectC,它就不需要修改工厂类。如果类型为"TypeC",它将自动创建ObjectC。

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

是的,将实现分离到一个实现文件中,并且只包括那里的文件,在头中只提供函数原型。

要实际调用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();
    }
};