嗨其他Android编码员,
每次制作新应用时,我都会遇到这个问题。想象一下,您的应用程序中有Activity,ListActivity和MapActivity的子类。现在我希望每个屏幕都有相同的选项菜单,当用户点击菜单按钮时显示。所以我用这种行为制作了一个BaseActivity。但是因为Java不允许多重继承,所以我必须为每种类型的Activity编写三个BaseActivities。这很难看,因为我有三倍相同的代码......我能想到的唯一解决方案是在其中一个BaseActivities中使一些行为静态,并在其他BaseActivites中引用它。但是仍然有很多重复......任何人都有一个更优雅的解决方案吗?
干杯
答案 0 :(得分:4)
这是单继承语言的权衡之一。不是通过继承各种Activity子类来复制代码,而是使用委托。这也称为委托继承。您将获得多重继承的功能而无需承担责任。
这是通过创建一个委托类来完成的,该委托类具有您希望的所有共享功能,然后让“超级”类调用委托。这仍然需要一小部分的复制和粘贴代码,但它将是最小的。维基百科有一个Delegation pattern的好例子。如果你有C#的背景,这种授权形式是相似的,但不仅限于单一方法,也不仅限于事件。