针对包结构问题的Android最佳做法

时间:2013-07-23 10:52:52

标签: android package standards project-structure

基于

我制作了以下Android包结构:

  • com.company.product.activities

  • com.company.product.database

  • com.company.product.fragments

  • com.company.product.fragments.adapters

  • com.company.product.models

但有时,根据要求,我需要为自定义对话框提供适配器。

我应该把它放在哪里?因为它是一个小型适配器,它主要用在对话框中的活动中,操作反映回活动。

面临的问题是:

  1. 将过多的上下文(Activity)引用传递给适配器。

  2. 所有方法最终都是公开的,这违反了隐藏实现细节的OOP概念。

  3. 私有适配器和包装结构有多大区别?这是Android项目包结构的标准方法吗?

1 个答案:

答案 0 :(得分:7)

我会将适配器放在adapters包中。即使it is small adapter, mostly its to be used within a activity in a dialog, with operations reflecting back to activity您永远不知道该适配器将如何发展以及将在何种情况下使用它。

关于您的疑虑:

  1. Too much of context references - 您的适配器的每个实例都有一个Context来引用。只要您没有从适配器泄漏任何东西,那么这不是问题。您也可以通过其他实现扩展此适配器,这也适用于这些实现。
  2. All methods end up public, which fails the OOP's concept of hiding implementation details。只要你从你的应用程序调用适配器(应该总是这样)并且你没有构建SDK,那么我真的没有看到问题。如果您担心OOP最佳做法,我宁愿担心让适配器尊重Single Responsibility Principle:不要让适配器做多于显示给定数据
  3. 考虑到可重用性,我宁愿不将适配器作为私有(静态或非静态)类成员。要添加更多内容,有一个best practice会阻止您在处理从内部类调用private代码时使用private访问权限。
  4. 总而言之,考虑到可重用性,Single Responsibility和最佳实践文章,我赞成或将adapters分离到专门的课程。