8

基于

我制作了以下Android包结构:

  • com.company.product.activities

  • com.company.product.database

  • com.company.product.fragments

  • com.company.product.fragments.adapters

  • com.company.product.models

但有时,根据要求,我需要一个用于自定义对话框的适配器。

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

面临的问题是:

  1. 过多的上下文(活动)引用被传递给适配器。

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

  3. 拥有一个私有适配器和封装结构会有多大的不同?这是Android项目包结构的标准方法吗?

4

1 回答 1

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. 考虑到可重用性,我宁愿不将适配器作为私有(静态或非静态)类成员。再补充一点,当您处理从内部类调用代码时,有一个最佳实践不鼓励使用访问。privateprivate

所以总结一下,考虑到可重用性Single Responsibility和最佳实践文章,我赞成或分离adapters到专门的课程。

于 2013-07-23T11:09:38.533 回答