【问题标题】:Can abstract factory be used for something other than creation抽象工厂可以用于创造以外的东西吗
【发布时间】:2014-07-22 04:47:02
【问题描述】:

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

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

如果我在抽象工厂(std::map<int, std::string> 类型)中添加另一个映射和两个方法std::string get_name_for_type(int)std::vector<std::string> get_type_names(),这会是一个好方法吗?

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

【问题讨论】:

  • javac#c++ ?
  • 这是一个设计模式问题,不是特定于语言的问题,因此是 java、c# 和 c++。
  • 我建议将此问题移至programmers.stackexchange.com

标签: oop design-patterns


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    Factory 用于存储集合并提供获取它的方法。如果你需要从一个对象中获取细节,它更像是一个翻译器而不是一个工厂,或者你可以为它创建扩展方法。

    译者详情:Translator

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      相关资源
      最近更新 更多