使用 ViewModel 的接口?

Using interfaces for ViewModels?

我目前正在根据官方文档和 google 提供的示例应用程序(sunflower 和 todo-app)将架构组件集成到我的应用程序中。我意识到 none 这些使用接口 ViewModels (向日葵应用程序甚至不使用存储库的接口)。

我的问题是:省略 ViewModels 的接口是否合理(包括优点和缺点)?

Is it reasonable to just omit the interfaces for ViewModels?

以下内容非常通用,不仅适用于 ViewModels

优点:

  • 更少的代码

缺点

  • 将无法使用大多数众所周知的设计模式;
  • 将无法正确进行单元测试类(无模拟);
  • 将无法正确使用依赖注入框架;
  • 使用另一个具体实现时的代码重构。

答案取决于您的 ViewModel 的复杂程度。如果你永远不会创建一个接口的多个实现(包括模拟),那么就没有必要创建接口,这样你就可以减少代码和整体维护负担。

也就是说,需要考虑的重要事项是:

  • 即使没有界面,你能对你的视图模型进行单元测试吗(答案应该是肯定的,否则你会遇到一些其他问题 IMO)
  • 你还能使用依赖注入框架吗(答案是肯定的,至少对于像 Prism 这样的一些 DI 框架)
  • 您是否只打算创建一个 ViewModel 实现?

我认为设计良好的 ViewModel 的标志应该是实现相对简单,并且易于单元测试而无需诉诸模拟。