如何在Android中分离Logic / UI

时间:2011-01-09 21:07:54

标签: android

我希望我的应用程序分为两部分:逻辑代码和UI。

我试图在每个活动中使用控制器类(这里我保留逻辑代码)来实现它。 活动将消息发送到控制器并以两种方式接收答案:

  1. 立即返回答案(如果操作不复杂且可以在很短的时间内完成)
  2. 活动设置了一些侦听器,控制器在操作完成时触发此侦听器。

    当控制器有很多对象时,会出现问题(每个对象应该处理一组操作,并且我必须设置每个操作并触发一个监听器):很难保持代码同步。

    我在问你是否知道更好的方法来实现这种机制。

    谢谢。

3 个答案:

答案 0 :(得分:10)

就个人而言,我认为的活动是控制器。窗口小部件是视图。其他人可能不同意,我远离MVC纯粹主义者。

答案 1 :(得分:5)

Android方法很漂亮。

首先要熟悉视图,然后看看你认为合适的扩展内容。

视图通过UI线程连接到控制器,UI线程是应用程序的主线程。您可以在XML中定义回调等,并通过使用android xml方法在此线程中处理所有按钮单击等。

您应该将XML视为视图,UI线程控制器和后台线程/服务/广播接收器等都是模型的一部分。

答案 2 :(得分:0)

您可以遵循“ Model View Presenter(MVP)”模式,该模式几乎可以组织代码并保持代码段清晰。

我喜欢虚拟视图方法,其中所有视图事件(如onClick,onLongClick ..)都委派给演示者,演示者负责业务逻辑并更新视图。

请考虑以下情况:用户在笔记中添加了一些文本,并且在视图中,我们有一个文本框texfield来指示状态并添加按钮。


用户键入文本,然后单击“添加”按钮。

添加按钮:“嘿演示者!用户要添加一些内容”。

演示者:“请给我您的文本, TextBox ”。

文本框:提供键入的文本。

演示者:使用商务逻辑验证文本。 使用Model类将项目添加到数据库,并将状态文本发送到 StatusTextView 显示。

StatusTextView :更新演示者发送的文本。


正如您所看到的,视图执行了Presenter所说的。您可以使用不同类型的Presenters来对用户交互进行不同的操作。

需要考虑的几点:

  • 让主持人远离android类,以便您可以对其进行单元测试 以后再单独。
  • 通过界面(合同)连接视图和演示者,以便您 以后可以通过更改应用程序插入不同的视图和演示者 要求
  • 使用像Dagger2这样的依赖注入框架甚至更多 解耦硬依赖性。

关于MVP的Google,并选择您喜欢的实施方式。在MVP中,我唯一的缺点是您的代码将变得庞大而清晰。

少量链接:

https://medium.com/cr8resume/make-you-hand-dirty-with-mvp-model-view-presenter-eab5b5c16e42

https://www.journaldev.com/14886/android-mvp

快乐编码:)