我开发了几个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是微不足道的,所以我们可以将它们作为嵌套类写在各自的活动中。但是想象一下,活动使用的类更大或不止一个,并且再次特定于该活动
从这个角度来看,我很想做:
src/com/company/bookapp\
+ list\
| +-BookListActivity.java
| +-BookListAdapter.java
|
+ download\
+-BookDownloadActivity.java
+-BookDownloadAsyncTask.java
使用这种方法,只有Activites对应用程序的其余部分可见,并且他们使用的类具有包可见性,而应用程序的其余部分不知道它们,我认为它更封装且更好。< / p>
但是,这是否意味着每个活动应该有不同的包?如果两个活动使用相同的适配器怎么办?
我很想知道你们在这方面做了什么,以及其他相关的问题,比如在哪里放置扩展视图。
答案 0 :(得分:0)
您可以从其他包导入类,因此您可以根据需要将其拆分。 我一直把它放在MVC包中。
但是如果你创建一个protectet类或方法,它只能在相同的包中使用。