我有一个概念上的问题,即代码的正确实现似乎需要多重继承,在许多OO语言中这不是问题,但是由于该项目是针对Android的,所以没有诸如multi之类的东西extends
。
我有一堆的活动,从不同的基类,如简单的衍生Activity
,TabActivity
,ListActivity
,ExpandableListActivity
,等。此外我有我需要的地方变成一些代码片段onStart
,onStop
,onSaveInstanceState
,onRestoreInstanceState
和其他标准的事件中的所有活动处理器。
如果所有活动只有一个基类,则可以将代码放入一个特殊的中间派生类中,然后创建将其扩展的所有活动。不幸的是,事实并非如此,因为存在多个基类。但是,将代码的相同部分放入几个中间类并不是一种方法,恕我直言。
另一种方法可以是创建一个助手对象,并将上述事件的所有调用委托给助手。但这要求包括辅助对象,并在所有中间类中重新定义所有处理程序。因此,这里的第一种方法没有太大区别-仍然有很多代码重复。
如果在Windows下发生类似情况,我将继承基类(与Activity
Android中的类“相对应”的基类),并在那里(在一个地方)捕获适当的消息。
为此,在Java / Android中可以做什么?我知道有一些有趣的工具,例如Java工具(带有一些真实的示例),但是我不是Java专家,所以不确定在这种情况下是否值得尝试。
如果我错过了其他一些不错的解决方案,请提及它们。
更新:
对于那些可能对解决Android中的相同问题感兴趣的人,我发现了一个简单的解决方法。存在Application类,该类除其他外提供接口ActivityLifecycleCallbacks。它正是我所需要的,它使我们能够拦截所有活动的重要事件并为其添加一些价值。此方法的唯一缺点是,它从API级别14开始就可用,这在许多情况下还远远不够(目前对API级别10的支持已成为典型要求)。
decordator pattern
。这是不得已的做法,尽管实际上演示了我希望避免的事情-代码重复。如果没有其他有趣的想法,我会接受您的回答。我可以使用泛型来概括“中间体”的代码吗?