我已经开发了几个 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 使用不同的包?如果两个活动使用同一个适配器怎么办?
我很想知道你们在这方面正在做什么,以及其他相关问题,例如在哪里放置扩展视图。