【问题标题】:How is a good packaging strategy in AndroidAndroid中一个好的打包策略是怎样的
【发布时间】:2013-07-31 02:39:10
【问题描述】:

我已经开发了几个 Android 应用,但我仍然不确定如何将这些类构建到不同的包中。

例如,假设我们正在构建一个书店应用,其中包含 BookListActivity 和 BookDownloadActivity。

BookListActivity 使用 ListView,它需要一个列表适配器。 BookDownloadActivity 需要 BookDownloadAsyncTask。

我见过有人这样构造代码:

src/com/company/bookapp\
                  + activity\
                  |   +-BookListActivity.java
                  |   +-BookDownloadActivity.java  
                  |  
                  + adapter\
                  |    +-BookListAdapter.java
                  |
                  + asynctask\
                       +-BookDownloadAsyncTask.java

这种结构在我们为所有活动都有一个包的方式上是有意义的。但是,我认为这看到了 java 包,就像文件夹一样,抽屉放在放东西的地方。 如果我们这样做,BookListAdapter 类和它的一些方法需要是公共的。我想使用 java 包,而不是像文件系统那样在不同文件夹中组织文件,而是像某种“命名空间”,充分利用 java 可见性修饰符的好处,包括包可见性。

所以,由于 BookListAdaper 仅用于 BookListActivity,我希望它具有包访问级别。 BookDownloadAsyncTask 也是如此,它只在 BookDownloadActivity 中使用。

当然,在这个例子中,Adapter 和 AsyncTask 是微不足道的和小的,所以我们可以将它们写在各自的活动中作为嵌套类。但是想象一下,Activity 使用的类更大或不止一个,并且同样是特定于该 Activity 的

从这个角度来看,我很想这样做:

src/com/company/bookapp\
                  + list\
                  |   +-BookListActivity.java
                  |   +-BookListAdapter.java  
                  |  
                  + download\
                       +-BookDownloadActivity.java
                       +-BookDownloadAsyncTask.java  

使用这种方法,只有 Activites 对应用程序的其余部分可见,并且它们使用的类具有包可见性,而应用程序的其余部分不知道它们,我认为它更加封装和更好。

但是,这是否意味着我们应该为每个 Activity 使用不同的包?如果两个活动使用同一个适配器怎么办?

我很想知道你们在这方面做了什么,以及其他相关问题,例如在哪里放置扩展视图。

【问题讨论】:

  • 投票结束,抱歉,因为我认为这主要是基于意见,可能会引发评论风暴。就个人而言,我使用的唯一标准是可见性,因此是封装。我将所有其他标准视为个人偏好。

标签: android project structure packages code-organization


【解决方案1】:

您可以从其他包中导入类,因此您可以随意拆分它。 我总是把我的放在 MVC 包中。

但是如果你创建了一个protectet类或方法,它只能在同一个包中使用。

【讨论】:

  • (模型、视图、控制)
猜你喜欢
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多