【发布时间】:2017-07-19 20:42:30
【问题描述】:
我试图使这个示例尽可能自然以使其简单。
假设我有一组项目。例如 item1, item2, item3, item4 等。
目前item用struct表示:
// only contains data
struct item{
string name;
std::vector<string> parts_name;
std::vector<double> parts_price;
std::vector<string> item_color;
...
};
itemx item1, item2...
然后我有一个名为items的课程
class items{
public:
// return name of all items
vector<string> get_all_item();
// return price of all parts
vector<double> get_all_parts_price();
private:
// hold vector of item
vector<shared_ptr<item>> list_of_items;
// name of item and its parts price
// eg: <item_1_part_1, $1.3>
// eg: <item_1_part_2, $2.3>
// eg: <item_2_part_1, $4.3>
map<string, double> parts_prices;
};
我当前的项目类的问题是它变得非常庞大, 随着项目特征的增加。
我的解决方案:使 struct item 包含分配负载的函数 从类项目中构造项目。
还有其他更好的方法或设计模式可以解决这类问题吗?
【问题讨论】:
-
可能只使用
std::vector<item> -
您可能不应该返回向量的副本...只需将所有内容存储在@Justin 提到的
std::vector<item>中,get_all_items()返回一个(const) std::vector<item>&并且对于各个部分,您可以创建自定义迭代项目和“子”向量的迭代器,这样当您只需要阅读某些内容时,您就不必创建向量...... -
get_all_parts_price()想要返回什么?所有零件的所有价格的总和,还是价格和零件的列表? -
@RichardHodges 列出所有物品中所有零件的价格.. 基本上是parts_prices 的所有值。
-
为什么颜色是矢量?为什么物品既有零件又有价格?当每个项目都有一个价格向量时,为什么项目会返回一个价格向量?什么是项目,与零件相比它代表什么?您正在做 OO 设计并寻求帮助,而没有描述对象 是什么。为什么零件不是物品,它们的区别是什么,零件为什么存在?
标签: c++ design-patterns