Использование класса генератора для генерации объектов

0

У меня мало классов:

class Item;
class Component;
class BrokenItem;

Мне нужно создать Item разных конфигураций из разных комбинаций Component

Вот что я сделал:

class ItemGenerator
{
public:
    ItemGenerator(const std::vector<Component>& components_);
    ItemGenerator(const BrokenItem& brokenItem_);
    // and a few more ways to generate

    const std::vector<Item>& getGeneratedItems() const;

private:
    // vector to store generated objects
    // a vector is used because multiple combination of
    // configuration can be generated
    std::vector<Item> generatedItems_;
}

Я намерен использовать его так:

std::vector<Component> comps { 1000, 1020, 1040, 1080 };
ItemGenerator ig(comps);
std::vector<Item> vi = ig.getGeneratedItems();
for (auto i : vi)
    std::cout << "generated item: " << i << std::endl;

Вопрос: Я делаю это неправильно? Если да, то какой лучший подход? Если нет, что я могу сделать, чтобы сделать его лучше?

  • 0
    Это должен быть класс? Если вы не сохраняете состояние, это могут быть просто отдельные функции в пространстве имен.
  • 0
    @DanDan Я думал, что смогу сгруппировать похожие функции вместе. Это плохо?
Показать ещё 1 комментарий
Теги:
class
design

1 ответ

0
Лучший ответ

Вы можете группировать подобные функции с помощью пространства имен:

namespace ItemGenerator
{
    std::vector<Item> FromComponents(const std::vector<Component>& components);
    Item FromBrokenItem(const BrokenItem& brokenItem);
}
  • 0
    Я думаю, что это так. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню