模型视图演示者-同一视图,不同的演示者

保证

我正在使用MVP构建一个Android应用,对此模式我有一个疑问。

说我有一个创建新人的屏幕该屏幕将显示一个EditText用于插入姓名的名称,另一个用于显示姓氏的名称,一个用于ImageView显示所选照片的​​图片,依此类推。这将导致一个View界面,由实施Fragment它将与Presenter由另一个类实现的一个接口配合

精细。

现在,我还有另一个功能:用于编辑现有人员的屏幕碰巧的是View,此功能的功能与创建新人员的功能相同。但是,Presenter是不同的。它将首先从db加载现有人员,以使用当前数据预填充视图,然后单击“保存”时对数据库的操作将是更新而不是插入。

因此,我认为这是MVP的一个示例,其中一个View与演示者的不同实现一起使用以实现不同的用例

  1. 你认为这是一个正确的假设,或者你觉得不同的特点应该有不同的ViewPresenter接口?

  2. 另外,如果您有一个共同点View和不同点Presenters,那么将实现View共同点,还是会导致由两个类实现相同的接口?在实践中,我看到两个选择。

    • 只有一个Fragment实现View取决于用户是要创建一个新人员还是更新一个现有的人员,该Fragment应该接收和使用其他Presenter。

    • 有两个Fragment每个实例都会实例化一个不同的对象Presenter使用组合或继承来避免两个片段之间的代码复制。

在这些情况下,您认为最好做什么?

谢谢。

行人

当您在Android上使用MVP模式创建类似CRUD的应用程序时,会遇到这种情况。

只要您在班级中很好地记录了它暗示两个不同演示者的“视图”,就可以很容易地获得单一视图,那么“就可以”


我个人建议创建2个视图,一个用于“创建”视图,一个用于“编辑”视图(目前它们可能是相同的,但是将它们分开可以清楚地表明它们是不同的东西。)

您很容易看到将来的情况(或这种模式的另一种暗示),您的“创建”和“编辑”视图实际上具有不同的API。或略有不同的视觉提示,例如一个标记为“创建/添加”,另一个标记为“更新”的按钮。

我个人将创建一个视图库/帮助程序类,这两个视图都从中提取逻辑。即使您进行了2次“观看”课程,这也应有助于您降低总体LoC。这样做的好处是,您可以轻松地更改“创建/编辑”视图,而不必担心会影响另一个视图。(我倾向于认为,即使在“创建/编辑”之间甚至存在“轻微”差异时,这两个视图文件也将更易于维护)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Dagger 2演示者注入

解除GWT中必要的演示者的约束

Android MVP发布演示者的正确方法

Ruby on Rails模式-装饰器与演示者

在illuminate / html模型表格中使用laravel演示者

MVP,在销毁时将演示者的视图设置为null?

Android MVP-我可以为自定义视图和片段提供多个演示者吗

Android MVP-我可以为自定义视图和片段提供多个演示者吗

业务逻辑和演示者中的匕首

android MVP-具有多个模型的演示者

包含CompositeDisposable的测试演示者

在MVP设计模式中,一个视图可以有多个演示者吗?

演示者视图的强制结果

演示者使用Ruby的Sinatra的示例

录制PowerPoint演示文稿时如何获得演示者视图?

如何更改PowerPoint 2011的演示者视图笔记的颜色?

Reveal.js和演示者视图

没有视图模型时如何为内容演示者选择视图

在Office 365中找不到“演示者视图”复选框

如何使用 Dagger2 和 MVP 模式调用模型文件中的演示者方法

模型->观察者->视图->控制器->模型->

如何使用数据绑定在onclick中将其他布局视图的内容传递给演示者?

Android MVP - 在无头片段中保留演示者时如何确保视图在配置更改期间得到更新?

使用dagger2创建模型时如何将模型注入演示者?

Android MVP 如何将数据从模型返回给演示者

如何将数据从父视图的演示者传递给子视图的演示者?

使用模型视图演示者模式时如何实现 RecyclerView?

风格和演示者之间的区别?

如何通过可观察的链视图控制器演示者