使用接口实现ViewModel?

6

我目前正在按照谷歌官方文档和提供的示例应用程序(sunflower和todo-app)将架构组件集成到我的应用程序中。我意识到这些示例应用程序都没有使用接口来实现ViewModels(sunflower应用程序甚至没有使用接口来实现repositories)。

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

2个回答

6
只省略ViewModels的接口,这样做合理吗?
以下内容相当通用,并不仅适用于ViewModels优点:
  • 代码更少。
缺点:
  • 无法使用大多数著名的设计模式;
  • 不能正确地单元测试类(无法进行模拟);
  • 不能正确地使用依赖注入框架;
  • 在使用另一个具体实现时需要进行代码重构。

1
我知道这不是问题的一部分,但是命名这样一个接口的最佳方式是什么?假设我有一个TasksViewModel类,并想为其创建一个接口。 - Doflaminhgo
3
根据开发者使用的命名惯例,你可以将它们称为1)“TasksViewModel”(界面)和“TasksViewModelImpl”(具体实现),或者2)“ITasksViewModel”(界面)和“TasksViewModel”(具体实现)。这只是个人口味问题。 - Onik

1
答案取决于您的ViewModel的复杂性。如果您永远不会创建多个接口实现(包括模拟),那么就没有必要创建接口,这样可以减少代码和整体维护负担。
尽管如此,需要考虑以下重要因素:
- 您能否对ViewModel进行单元测试,即使没有接口(答案应该是肯定的,否则您可能存在其他问题) - 您仍然可以使用依赖注入框架吗?(答案至少对于一些DI框架,如Prism,是肯定的) - 您只会创建一个ViewModel实现吗?
我认为,一个设计良好的ViewModel标志是具有相对简单的实现,并且易于通过单元测试而无需使用模拟。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接