哪个 class 应该做这项工作?

Which class should do the work?

我正在为我的论文构建一个销售系统,我在设计中一直与自己争论,class 应该做这个工作?

所以从这 3 个 classes;

设施Class - 这个class是其他人和GUI

之间的中心class协调者

产品Class - 表示产品的详细信息

销售额Class - 表示多个项目的销售额

关于销售产品,我的大问题是:

"Which class should calculate the total price"。设施 class 或销售 class?

什么是最佳做法?

提前致谢

我认为,作为一般规则,设施或经理 class 应该 始终 仅充当用户和其他人之间的缓冲区 classes,这让我说你应该把总价计算在销售额 class.

销售 class 最初是为处理多件商品的销售而设计的,这意味着应该有一种方法 returns 所有商品的价格当前购物车的商品合并,然后传给接口class显示。

如果考虑MVC的话,Model是Product和Sales,Controller是Facility,View就不说了。

如果这应该是一个设计合理的解决方案,您将添加一个服务层,它将完成实际工作。

所以模型保留数据,视图显示数据,控制器在模型和视图之间编排数据,服务层将对数据执行业务逻辑(预订)。

还有一个变体,其中视图有一个特定的视图模型 class,它将专门为视图准备数据和收集数据。但对于你的情况,这并不重要。

我的第一个冲动是 根据他们的职责 对这些 class 进行排序 关于模型-视图-控制器设计(因为您提到了 GUI 和接口 class 到它)。

  • Facility - 根据您的说法,它是一个 控制器,它将 GUI(视图)连接到您的数据(模型)。
  • Product - 这是一个模型 class,因为它包含数据和业务逻辑。
  • Sale - 这个class连接到多个Products并且多个Products共享同一个Sale,因为一个产品可以销售超过一次(这是一个假设)并且一次销售可以包括多种产品。也是模特class.

由于 Sale class 代表多个产品 并且您感兴趣的是(例如)各个价格的 总和 这些产品中,这将是存储该方法的地方。