我正在开发一个处理发票的桌面GUI(Qt + Python)应用程序。到目前为止,我有两种物体:
描述发票,产品,客户,即模型的ORM类。
允许浏览\编辑模型的视图。
每个模型都可以有多个视图。
我得到了这些代码:
所以问题是 - 我应该选择哪种设计模式?目标是避免代码重复,并允许快速更改模型和视图。 到目前为止,我一直在考虑简单的模型 - 视图方法,1& 4属于模型本身。但2& 3给了我一个暂停。我应该使用MVC并将2& 3放入控制器吗?有什么想法吗?谢谢!
答案 0 :(得分:0)
我认为查看Command Query Responsibility Segregation(CQRS)模式对您来说很有价值:http://martinfowler.com/bliki/CQRS.html
您拥有作为视图的模型,以及作为实体的模型。您的视图模型逻辑不应该传送到Controller中,控制器应该将事件分派给它。
因此,在您的示例#2中,您说:当选择客户时,设置适当的价格水平并重新计算......被“选中”的客户是某个域对象的一部分,无论是“订单”还是“交易”或其他一些。这个域对象可能不是Order实体,而是OrderProcess域视图,它有一堆与之关联的“视图”(如价格列表)。