j2e*_*esu 5 architecture mvp android
我喜欢 MVP 的概念,它对我组织代码有很大帮助,但是每次当我需要从外部应用程序、对话框或请求权限获取结果时,我都会遇到同样的问题 -架构的哪个组件应该关心这个?
例如,我们需要实现以下行为:
所以,我们可以这样做(也决定 Fragment 实现 View,包含到 Presenter 的链接并向它发送 UI 事件):
interface View {
void showRecognizer();//2
void showChooseDialog(List<String> items);//4
}
interface Presenter {
void onButtonClick();//1
void onRecognizerResult(List<String> results);//3
void onResultChosen(String result);//5
}
Run Code Online (Sandbox Code Playgroud)
好的,它会工作,但我们有一些问题:
所以,我想知道您对此的看法,如何做得更好(或者您认为这没问题)?
一般而言:启动对话和活动,请求权限,处理结果,从 MVP 和干净架构的角度来看,这是谁的职责?
鼓励任何想法或建议。请帮我澄清一下,谢谢。
我对 MVP 的 5 美分:
有些事情在“视图”部分中是不可避免的,例如启动和收听某些服务(例如:谷歌地图或地点)。
在做类似的事情时,我尝试在 View 中保留尽可能少的逻辑,并通知 Presenter 任何交互(即使当时没有用),然后返回 View 所需的操作。
我的听众通常会触发演示者,而不是其他任何东西。然后演示者触发视图执行某些功能。这可能有点过分了,但我不想让我的演示者感到被排除在外。
在您的情况下,视图将启动一个对话框和/或权限请求,但演示者会命令它这样做。然后,当结果返回时,将它们交给 Presenter 来决定如何处理(只要你不传递视图等 Android 东西)。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1394 次 |
| 最近记录: |