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 > 和