【问题标题】:What's the right way to Object Orient an Android Program?面向对象的Android程序的正确方法是什么?
【发布时间】:2025-11-29 05:20:02
【问题描述】:

我现在已经看过很多关于如何为 Android 编程的教程 - 我什至已经开始自己创建一些程序。但是,我注意到我的程序看起来都像过程程序,而 Java 应该使用面向对象。我一直在尝试解决这个问题,但我发现了一个问题。我的程序的主要类 - 在应用程序启动时执行的类(例如在 com.testprogram.www 下)似乎同时是屏幕和控制层的混合。

在我找到的所有教程中,我看到从 main.xml 视图中恢复了一个可视对象(例如,一个按钮 - 此恢复向我表明这将是用于处理的“控制”层),然后就在此之后该对象已注册到某种侦听器(在本例中为 OnClickListener - 这应该在屏幕中完成,而不是在控件中,对吧?)。

这就是这个意思吗? www 包下的这个主类是什么? “屏幕”层还是“控制”层?这门课是做我上面提到的事情的正确地方吗?这样做是因为基于 XML 的接口无法注册 Java 侦听器吗?任何人都知道我可以参考如何为 Android 进行 OO 的好地方?

【问题讨论】:

    标签: android oop


    【解决方案1】:

    MVVM 使用 Binding 在 Android 编程中非常有帮助。它有助于减少当前存在于基础架构中的过载 Activity 结构。以下是您可以使用的开源 Binding 库。

    http://code.google.com/p/android-binding/wiki/Motivation

    【讨论】:

      【解决方案2】:

      如果您使用标准布局模式作为 xml、strings.xml 中的字符串、处理程序的活动并将核心逻辑/算法/数据存储检索放在一个单独的类(模型类)中,您将会很好编写更好的代码的方法。

      为了测试你的架构,

      1) 问问自己是否可以对独立于 UI 的核心逻辑/算法/数据存储(模型类)进行单元测试。你可以在另一个具有不同 UI 的项目中毫无困难地重用模型类吗?

      2) 然后问问自己,您是否可以通过简单地提供可选的 strings.xml 文件将您的应用程序移植到另一种语言。

      所以演示文稿(视图)主要在 main.xml 中。 事件和系统处理代码(控制器)主要在 MyActivity.java 中 算法/数据存储主要在 Model.java 中。

      真正大的分离在于核心算法/数据存储和用户界面之间。核心算法/数据存储应该忽略用户界面的细节。在 UNIX 中,这是 INTERFACE (VC)-ENGINE (M) 模式。将 View 从 Controller 中分离出来只是让架构更进一步。

      希望对您有所帮助, 日航

      【讨论】:

        【解决方案3】:

        您可以检查关于两种不同架构模式的两个问题。

        【讨论】:

          【解决方案4】:

          【讨论】:

            最近更新 更多