使用 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 的标志应该是实现相对简单,并且易于单元测试而无需诉诸模拟。
我目前正在根据官方文档和 google 提供的示例应用程序(sunflower 和 todo-app)将架构组件集成到我的应用程序中。我意识到 none 这些使用接口 ViewModels (向日葵应用程序甚至不使用存储库的接口)。
我的问题是:省略 ViewModels 的接口是否合理(包括优点和缺点)?
Is it reasonable to just omit the interfaces for ViewModels?
以下内容非常通用,不仅适用于 ViewModels。
优点:
- 更少的代码
缺点:
- 将无法使用大多数众所周知的设计模式;
- 将无法正确进行单元测试类(无模拟);
- 将无法正确使用依赖注入框架;
- 使用另一个具体实现时的代码重构。
答案取决于您的 ViewModel 的复杂程度。如果你永远不会创建一个接口的多个实现(包括模拟),那么就没有必要创建接口,这样你就可以减少代码和整体维护负担。
也就是说,需要考虑的重要事项是:
- 即使没有界面,你能对你的视图模型进行单元测试吗(答案应该是肯定的,否则你会遇到一些其他问题 IMO)
- 你还能使用依赖注入框架吗(答案是肯定的,至少对于像 Prism 这样的一些 DI 框架)
- 您是否只打算创建一个 ViewModel 实现?
我认为设计良好的 ViewModel 的标志应该是实现相对简单,并且易于单元测试而无需诉诸模拟。