Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 抽象工厂是否可以用于创建以外的其他用途_Oop_Design Patterns - Fatal编程技术网

Oop 抽象工厂是否可以用于创建以外的其他用途

Oop 抽象工厂是否可以用于创建以外的其他用途,oop,design-patterns,Oop,Design Patterns,我有一个抽象工厂类,它保存一些类型的映射(应用程序特定的类型为整数)和指向工厂对象的指针。此映射在抽象工厂的构造函数中初始化,抽象工厂有一个名为IFactory*get\u factory\u for_type(int)的方法IFactory是所有工厂类必须从中继承的接口 我还需要一个字符串,表示每个工厂可以生产的对象,以及所有可用对象类型的列表 如果我在抽象工厂中添加另一个映射(类型为std::map)和两个方法std::string get_name\u for_type(int)和std:

我有一个抽象工厂类,它保存一些类型的映射(应用程序特定的类型为整数)和指向工厂对象的指针。此映射在抽象工厂的构造函数中初始化,抽象工厂有一个名为
IFactory*get\u factory\u for_type(int)
的方法<代码>IFactory是所有工厂类必须从中继承的接口

我还需要一个字符串,表示每个工厂可以生产的对象,以及所有可用对象类型的列表

如果我在抽象工厂中添加另一个映射(类型为
std::map
)和两个方法
std::string get_name\u for_type(int)
std::vector get_type_names()
,这是一个好方法吗


我对这样做很谨慎,因为抽象工厂应该只负责创建对象工厂。有没有更好的方法,或者可以在抽象工厂中执行此操作?

工厂用于存储集合并提供获取集合的方法。如果您需要从对象获取详细信息,那么它更像是一个转换器而不是一个工厂,或者您可以为它创建扩展方法


译者详细信息:

抽象工厂的目的是能够创建一组特定的对象,但要适应特定的环境。教科书中的示例适用于windows/linux/mac等,但更相关的示例适用于不同的持久性选项

由于工厂创建的类型应该是已知的,所以我认为没有理由对对象进行某种枚举,因为对于所有不同的环境,对象应该保持相同


也就是说,没有人说你必须盲目地遵循模式。我建议您先记录一下偏差,并解释其目的。

代码> java < /COD>,<代码> C > 和 C++ >代码>这是一个设计模式问题,不是语言特定的,因此是java、C++和C++。我建议把这个问题移到