【问题标题】:android object oriented programming安卓面向对象编程
【发布时间】:2011-11-14 13:10:50
【问题描述】:

我正在使用 Eclipse 在 Android 中进行一些基本编程。我目前正在翻阅一本书并使用书中编写的一些示例代码。

我注意到,在这本特别的书中,到目前为止,所有示例都在 Main-Activity 中进行。我不认为这是非常好的面向对象编程实践,因为我来自传统的 Java 背景。

这是移动平台的常见做法吗?类不应该都包含在自己的文件中吗?

【问题讨论】:

  • 你能发布一些例子来更好地说明你的问题吗?
  • OOP 并不总是最佳实践;并且拆分成上千个文件并不总能产生一个好的 OOP 程序。

标签: java android oop


【解决方案1】:

类不应该都包含在自己的文件中吗?

不一定,因为 Android Activity 是一个“特殊情况”类。如果您还没有完成,我建议您阅读Application Fundamentals,尤其是Application components 下的“活动”部分...

一个活动代表一个带有用户界面的屏幕。例如,一个电子邮件应用程序可能有一个显示新电子邮件列表的活动,另一个用于撰写电子邮件的活动,以及另一个用于阅读电子邮件的活动。 虽然这些活动一起工作以在电子邮件应用程序中形成一种有凝聚力的用户体验,但每个活动都独立于其他活动。因此,不同的应用程序可以启动这些活动中的任何一项(如果电子邮件应用程序允许)。例如,相机应用程序可以在电子邮件应用程序中启动撰写新邮件的活动,以便用户分享一张照片。

请注意我以粗体突出显示的文本部分。关键是Activity 本身并不是完整的应用程序,如果允许,任何第三方应用程序都可能在您的一个应用程序中调用Activity。因此,使Activity 尽可能独立是很常见的。一个特殊的例子是使用类似AsyncTask 的东西,它提供了执行后台线程以及操作UI 的方法——嵌套一个扩展AsyncTask 的私有类是很常见的并且可以简化代码。出于同样的原因,扩展 BroadcastReceiver 的嵌套类也很常见。

也就是说,为 POJO 帮助类使用单独的 Java 类文件并没有错,例如,它只是归结为您的应用程序的复杂程度,但这可能意味着要特别考虑某些 Android 类的工作方式 - @ 987654330@ 类是一个特别是如果定义在一个单独的类文件中,试试吧,你会明白我的意思。 :-)

【讨论】:

  • Activity 本身几乎是一个应用程序这一事实应该意味着与它完全包含在一个大类中完全相反。任何应用程序或多或少都是“独立的”,这并不意味着所有代码都应该在一个类中。正如您所引用的,“活动协同工作以在(一个)应用程序中形成一个有凝聚力的用户体验”,实际上预计部分 UI 和功能在活动之间共享。
  • @Groo:“Activity 本身几乎就是一个应用程序的事实......” - 不,这正是许多 Android 新手所相信的,即他们认为 Activity 是 ' 的同义词应用程序'。实际上,一个应用程序可以有几十个组件(活动、服务、广播接收器、内容提供器)。我并不是建议所有活动都应该包含所有内容——我的观点是,活动通常是非常简单的单“页面”UI,它们执行非常简单的操作,因此通常可以包含他们需要的所有内容。如果需要共享代码,则可以使用辅助类。
  • +1 好吧,我想我看帖子太肤浅了,现在我明白了:您将“自包含”Activity 称为完整应用程序的一部分。确实,您不需要将应用程序的每个部分拆分为多个文件(或类),但是在进行 TDD 编程时,能够单独测试每个最小的组件通常很好,所以我倾向于进入大部分时间都是这个方向。但话又说回来,TDD 也不是灵丹妙药。而且我确实使用私有类来分解类功能的复杂部分,然后在需要时(以及如果)重构它们。
【解决方案2】:

OO 是关于将功能放入类中。您编写这些类的方式定义了它是否是好的 OO(尽管这是有争议的)。所有这些类是在一个文件中还是在几个文件中,或者每个类都有自己的文件,这只是个人喜好问题,而不是直接的 OO 问题。

由于这是一本包含(我认为)小样本的书,它可能与所有类都在单独的文件中一样容易阅读。

【讨论】:

    【解决方案3】:

    如果您使用正确的 OOP,您可以更快、更高效地创建基于模板的应用程序。

    您应该努力做到这一点,例如,如果您有一个通用数据库应用程序并且可以使用多个数据库,只需稍作更改。

    【讨论】:

      猜你喜欢
      • 2019-08-02
      • 2010-09-18
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多