1

我已经开发了几个 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 使用不同的包?如果两个活动使用同一个适配器怎么办?

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

4

1 回答 1

0

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

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

于 2013-07-30T19:36:29.573 回答