【发布时间】: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