使用生成器类生成对象

Using a generator class to generate objects

本文关键字:对象      更新时间:2023-10-16

我有几个类:

class Item;
class Component;
class BrokenItem;

我需要能够从Component s的不同组合中生成不同构型的Item s

这是我所做的:

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;

问题:我做错了吗?如果是这样,有什么更好的方法吗?如果不是,我能做些什么让它变得更好?

您可以使用命名空间对类似的函数进行分组:

namespace ItemGenerator
{
    std::vector<Item> FromComponents(const std::vector<Component>& components);
    Item FromBrokenItem(const BrokenItem& brokenItem);
}