我正在做一个关于移动平台的小研究,我想知道Android中使用了哪些设计模式?

e、 g.在iOS模型中,视图控制器与委托和其他模式一起被广泛使用.

Android使用的模式是什么,具体在哪里使用?

EDIT

我不是在问内核、dalvik等深层次使用的设计模式,而是关于应用程序开发人员在开发应用程序时会遇到的模式.

推荐答案

我try 使用model–view–controller(MVC)和model–view–presenter架构模式进行android开发.我的发现是模型-视图-控制器工作正常,但有几个"问题".这一切都取决于你对安卓Activity类的看法.它是控制器还是视图?

实际的Activity类并没有扩展Android的View类,但是它可以处理向用户显示窗口,以及处理该窗口的事件(onCreate、onPause等).

这意味着,当您使用MVC模式时,您的控制器实际上是一个伪视图-控制器.因为它正在处理向用户显示窗口,以及使用setContentView添加到其中的其他视图组件,并且还处理至少各种活动生命周期事件的事件.

在MVC中,控制器被认为是主要的入口点.如果将其应用于Android开发时,这一点有点值得商榷,因为活动是大多数应用程序的天然切入点.

因此,我个人发现model–view–presenter模式非常适合Android开发.由于视图在该模式中的作用是:

  • 作为切入点
  • 渲染组件
  • 将用户事件路由到演示者

这使您可以像这样实现您的模型:

View-它包含您的UI组件,并为它们处理事件.

Presenter-这将处理模型和视图之间的通信,将其视为模型的网关.也就是说,如果你有一个复杂的领域模型,它代表的是什么,天知道,你的视图只需要这个模型的一个很小的子集,那么演示者的工作就是查询模型,然后更新视图.例如,如果你有一个模型包含一段文字、一个标题和一个字数.但是在给定的视图中,您只需要在视图中显示标题.然后演示者将从模型中读取所需的数据,并相应地更新视图.

Model-这基本上应该是你的完整域模型.希望它也能让你的领域模型更"紧凑",因为你不需要特殊的方法来处理上面提到的情况.

通过将模型与视图完全分离(通过使用演示器),测试模型也变得更加直观.您可以对域模型进行单元测试,对演示者进行单元测试.

试试看.我个人认为它非常适合Android开发.

Android相关问答推荐

如何使用Jetpack Compose使水平pager 显示离屏页面?

将Android Studio插件复制到离线网络

Android Gradle/Groovy,如何将文件复制到APK

请求标头为空/无法通过拦截器获取

在Jetpack Compose中从LazyColumn中删除项目时发生IndexOutOf边界异常

如何隐藏OutlinedTextField边框上的提示标签

Play store 的 Play 完整性与 Firebase 应用判断 Play 完整性

在本地通知中设置自定义声音

Android Studio Relay插件(版本0.3.07)错误

Android Drawable文件夹中的图像显示模糊

具有管理员权限的 Kotlin 中的多用户系统

如何从 firebase 实时数据库中检索最后一个值

将 CircularProgressIndicator 添加到按钮而不增加其高度

围绕动态大小的内容包装 Jetpack Compose Row?

Jetpack Compose UI - 在 AlertDialog 中单击时按钮宽度会发生变化

PayUCheckoutPro Android SDK 实现问题

android xml底部空间大

我的 React Native 在 11 月 4 日之前运行良好,但现在在运行 yarn android 时抛出异常

在 compose 屏幕之间传递 uri 会导致:SecurityException: Permission Denial

Xamarin 获取动态 ListView DataTemplate 中的按钮单击事件数据