我试图让这个例子尽可能自然,以使其变得简单。
假设我有一组物品。例如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;
};
我目前的项目类的问题是它的增长真的很大, 作为项目的特征增加。
我的解决方案:make struct item包含分配负载的函数 从类项构造项目。
还有其他更好的方式或任何设计模式适用于此类问题吗?
答案 0 :(得分:1)
很难告诉你如何根据你的输入“设计”你的应用程序 - 我认为你在这里关注的是错误的方面。您的item结构包含向量。这意味着复数。但是,该课程仍被称为item
。
从这个意义上讲:不要在这里考虑模式。相反,退后一步,仔细看看你打算建模的“真实世界”。你看,对象和类的核心点是构建你正在处理的域的模型。
这里没有答案:仔细查看对象所具有的“真实世界”关系,然后关注创建一个有助于完成工作流程的OO模型实行。