【问题标题】:How Do I create class that can automaticly initialize other classes using String Parameters如何创建可以使用字符串参数自动初始化其他类的类
【发布时间】:2016-03-31 15:33:03
【问题描述】:

我有以下问题:
我有一个静态工厂类和一堆产品类。
工厂类应该被赋予一堆字符串向量,并且能够将产品对象作为 BaseProductClass 返回。

所以我基本上会给工厂类参数“香蕉”、“绿色”和“新鲜”,它会返回一个绿色的新鲜香蕉作为产品类。
我遇到的问题是 Factory 类在技术上不应该知道所有 Product 类,而只知道 Product 基类。但是,它应该有一个类型数组,其中所有产品类都存储为与标识它们的字符串相关联的通用类型(或者字符串是类的一部分,并且可以以某种方式提取)。
它应该能够获取第一个字符串参数,将其连接到一个类型,然后将此类型发送到 String 数组并让它自己初始化。

最后,我应该能够创建新的 Product 类并将它们输入到通用类型数组中。
有谁知道实现这样的事情的最优雅的方法?

【问题讨论】:

    标签: c++ oop inheritance types


    【解决方案1】:

    您的每个产品类都需要有自己的工厂,例如,它继承自 BaseProductFactory 类。此类声明了一个虚拟的BaseProductClass *create() 方法,例如,该方法通过构造该类的新实例在子类中实现。

    您的“通用类型数组”会将产品名称映射到指向相应产品类'BaseProductFactory 实例的指针。

    除了产品类之外,您实际上是在工厂上进行类型擦除。

    【讨论】:

    • 有点失望,我希望有一种方法可以使用模板或我可以存储在数组中的东西来自动化。但是你的方法听起来也不错,所以谢谢你。我暂时不回答这个问题,我希望没关系
    • 工厂子类可以是模板,当然是继承自BaseProductFactory类。
    猜你喜欢
    • 2011-01-14
    • 2023-02-16
    • 2023-03-21
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    相关资源
    最近更新 更多