0

我正在开发一个处理发票的桌面 GUI (Qt+Python) 应用程序。到目前为止,我得到了 2 种对象:

  • 描述发票、产品、客户(即模型)的 ORM 类。

  • 允许浏览\编辑模型的视图。

每个模型可以有多个视图。

我得到了这些类型的代码:

  1. 初始化模型的代码(“创建新发票时,发票日期应为今天”)
  2. 对视图中的用户更改做出反应的代码(“选择客户后,设置适当的价格水平并重新计算所有价格和金额”)
  3. 即时进行明显验证的代码(“发票日期不能为空!必须选择产品!”)
  4. 根据业务规则验证发票的代码(“产品没有库存”、“销售额超过客户信用”)。

所以问题是——我应该选择哪种设计模式?目的是避免代码重复并允许对模型和视图进行快速更改。到目前为止,我一直在考虑简单的模型视图方法,其中 1&4 属于模型本身。但是 2&3 让我停下来。我应该使用 MVC 并将 2&3 放入控制器吗?有什么想法吗?谢谢!

4

1 回答 1

0

我认为查看命令查询责任分离 (CQRS) 模式对您很有价值: http ://martinfowler.com/bliki/CQRS.html

您有作为视图的模型和作为实体的模型。您的视图模型逻辑不应该被传送到控制器中,控制器应该向它分派事件。

因此,在您的示例2中,您说:选择客户时,设置适当的价格水平并重新计算...被“选择”的客户是某些域对象的一部分,无论是“订单”还是“交易”或一些这样的。这个域对象可能不是 Order 实体,而是 OrderProcess 域视图,它有一堆与之关联的“视图”(如价目表)。

于 2013-09-18T18:12:56.763 回答