【发布时间】:2015-07-23 02:29:27
【问题描述】:
我正在使用 MVP 构建一个 Android 应用,我对这种模式有一个疑问。
假设我有一个屏幕用于创建一个新人。此屏幕将显示一个EditText 用于插入姓名,另一个用于姓氏,一个ImageView 用于显示选择的照片图片等。
这将导致一个View 接口,由Fragment 实现。它将与一个由另一个类实现的Presenter 接口配合。
很好。
现在我有了另一个功能:编辑现有人物的屏幕。
碰巧的是,此功能的View 与创建新人的功能相同。但是,Presenter 不同。它将首先从 db 加载现有人员以使用当前数据预填充视图,并且单击“保存”时对数据库的操作将是更新而不是插入。
所以,我认为这是 MVP 的一个示例其中一个 View 与 Presenter 的不同实现一起工作以实现不同的用例。
您认为这是一个正确的假设,还是您认为不同的功能应该有不同的
View和Presenter接口?-
另外,如果你有一个共同的
View和不同的Presenters,那么View的实现会是共同的,还是会导致两个类实现相同的接口?在实践中,我看到了两种选择。只有一个
Fragment实现View。根据用户是要创建新用户还是更新现有用户,Fragment 应该接收并使用不同的 Presenter。有两个
Fragments。每个人都会实例化一个不同的Presenter。使用组合或继承来避免两个片段之间的代码复制。
在这些情况下,您认为怎样做比较好?
谢谢。
【问题讨论】:
-
我认为你的方法是正确的。
-
您可以共享相同的
View,并且只有一个Fragment接收不同的Presenter,具体取决于其用途(编辑或创建)。
标签: android design-patterns mvp presenter ui-patterns