Ate*_*ral 5 language-agnostic mvp state design-patterns
在SO上与MVP相关的其他问题中,人们谈论Presenter保留状态信息(可以是会话状态或UI状态)。我想知道的是,由于状态基本上是“瞬态数据”,并且Model的目的是封装数据访问权限,所以状态不能保留在Model内吗?将状态存储在Presenter和Model中是否有任何经验法则或利弊?MVP模式是否要求使用Presenter?
模型的目的不是封装数据访问,而是提供域的表示(模型),无论它是什么。有时数据访问作为模型的一部分包含在内(例如使用Active Record样式的数据访问),但通常它是独立的。例如,当我在桌面应用程序中完成 MVP 时,演示者直接从数据库中或使用存储库检索模型- 模型与数据访问无关。
不过,存储与视图相关的状态的位置有点灰色区域,取决于您使用的应用程序类型 - 对于桌面应用程序,它更容易,因为您可以将其保存在演示者中,对于网络应用程序,事情得到有点棘手。您可能会考虑为视图使用单独的模型,它可能会也可能不会包装核心模型(如MVVM模式中的 ViewModel ,在 .Net WPF 开发中很流行)。