【发布时间】:2018-11-27 15:50:54
【问题描述】:
我的应用中有多个活动需要一些功能。他们需要能够访问 Activity 方法,并且在某些情况下会覆盖方法(例如,我有一些共享功能可以从需要处理 onRequestPermissionsResult 的图库中选择图片)。
其中任何一个都很简单 - 我可以创建一个 XXXBase 类,然后我的 Activity 可以从中派生。如果我在我的 Activity 中需要多个这些,我会受到继承机制的限制。
我可以将所有这些额外的功能放在一个重复使用的通用 Base 类中,但该类最终可能会变得非常庞大和笨重。
是否有我缺少的替代方法?我正在使用 Kotlin,如果这开辟了任何额外的可能性。
【问题讨论】:
-
拥有一个实用类(通常是单例)或者你只是选择一个静态方法是很常见的。
-
通常,我将我的可重用方法组织在一个 utils 类中,并让活动调用它们。如果您觉得课程越来越大,请尝试根据功能或主题将其拆分为更小的课程。
-
在 Kotlin 中,您可以使用 Delegation Pattern 或 Interface with default implementation,具体取决于您的用例。
-
@pawel 具有默认实现的接口实际上似乎是一种很好的语言级别方法。在这种特殊情况下,下面的无头片段方法可能会更好一些,因为使用多个助手时传递的事件将自动工作,而不是必须在活动中实现,但我从你的回答中学到了,所以谢谢。