各位 Android 程序员大家好,
这是我每次制作新应用程序时都会遇到的问题。想象一下,您的应用程序中有 Activity、ListActivity 和 MapActivity 的子类。现在我希望当用户单击菜单按钮时每个屏幕都显示相同的选项菜单。所以我用这种行为创建了一个 BaseActivity。但是因为 Java 不允许多重继承,所以我必须为每种类型的 Activity 编写三个 BaseActivities。这很丑陋,因为我有三倍相同的代码...我能想到的唯一解决方案是在其中一个 BaseActivities 中使某些行为静态,并在其他 BaseActivites 中引用该行为。但仍然有很多重复...有人对这个问题有更优雅的解决方案吗?
干杯
最佳答案
这是单继承语言的权衡之一。使用委托(delegate)而不是通过继承各种 Activity 子类来重复代码。这也称为委托(delegate)继承。您将获得多重继承的功能,而无需承担任何责任。
这是通过创建一个委托(delegate)类来完成的,该委托(delegate)类具有您想要的所有共享功能,然后让“ super ”类调用该委托(delegate)。这仍然需要少量的复制粘贴代码,但数量很少。维基百科有一个很好的例子 Delegation pattern 。如果您有 C# 背景,这种形式的委托(delegate)是类似的,但不限于单个方法和多个事件。
关于java - Android应用架构: how to share behavior between all screens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616025/