如何使用棱镜和团结实现真正的松散耦合



我已经使用PrismUnity Framework开发了WPF应用程序,并且我对以下情况有一些疑问。

是否正确实施了。
  • 抽象类/接口 - 我已经为一个组件中的所有图层组织了界面,然后在相应的库中引用了它以进行实现。现在,引用的库可以访问其他图层的所有非必需接口。例如服务层可以访问UI接口。这是根据clear separation的正确实现,还是我应该将其分为多个组件。

  • 查看模型依赖项 - 我使用EventAggregator主要用于在视图模型之间进行通信。在某些情况下,我直接在构造函数中传递其他视图模型的实例,并使用DI容器解决该模型。我想通过引入接口以实现明确的分离来省略直接视图模型依赖关系。如何以其他开发人员可以理解的方式将视图模型的接口组织到一个单独的程序集中。要避免创建多个UI项目,我只创建了一个单个程序集并将它们从逻辑上将其分为文件夹。

  • 抽象模块类 - 而不是指定bootstrapper.cs文件中的所有依赖项,而是在相应的模块中考虑了它们。我的大多数班级LIB项目都提到了棱镜库。因此,将UI特定的名称空间添加到非UI相关项目中。有什么更好的方法可以实现吗?

抽象类/界面

我会尽可能多地进行许多"接口组件",而太多的人会受伤。示例:如果您需要以防止第1层与第3层进行潜在通信,请将第1层至层的2英寸框架放入一个组件中,而对于另一个组件中的2到2层3。

查看模型依赖项

通常,您根本不需要通过视图模型。传递数据(又称模型),视图模型本身不会持有其他地方无法使用的数据或对视图模型绑定的视图以外的任何人。

抽象模块类

您的 Prism应用程序参考 Prism ...那又如何?只要仅IModule实现接收IUnityContainer,我根本不在乎。如果有人需要发布活动,他将获得IEventAggregator ...那已经是一个接口,您可以在测试中注入模拟,因此无需进一步的抽象。

最新更新