在非平凡的桌面应用程序中实现松散耦合的MVC结构有哪些鲜为人知的技巧(例如,至少有两级视图/控制器和多个模型)?
答案 0 :(得分:1)
在接口中声明事件处理程序(对于视图很重要)。这样,您可以松散地耦合由控制器管理的事件处理。如果您的应用程序是多线程的,则可能需要在使用视图时使用InvokeRequired。
答案 1 :(得分:1)
使用界面。
很多。我喜欢使用“IDoThisForYou”风格(即使是一种不是惯用的语言),因为界面代表了另一个类可以使用的角色。
让控制器负责控制互动
控制器控制域对象,服务等之间的交互。
使用事件在控制器之间传递信息
让每个需要信息的控制器订阅该事件。使用界面。
不要在您的域对象上放置演示文稿信息
相反,允许控制器创建具有所需信息的演示者或视图模型。这不包括“ToString()”。如果您使用的是没有多重继承的语言,则最终可能会在演示者之间出现一些重复。没关系 - 复制比耦合更好,而且无论如何UI都会发生很大变化。
不要在你的gui中放置逻辑
相反,允许控制器创建一个演示者或视图mdoel,它具有您需要的信息。这包括像“MyAnimal.Species.Name”这样的火车残骸 - 使其显示为“SpeciesName”。
测试
手动。没有替代品。单元和验收测试有很长的路要走,但没有什么能比得上应用程序并实际使用你编写的混乱来找出它是多么混乱。如果没有自己动手,请不要将其传递给QAs。
哦,不要在单元测试中模拟域对象。这不值得。使用构建器。