两个共享共同function的活动

我有两个活动: AddContactEditContact 。 它们共享许多常见的实例变量和作用于该数据的方法。

重构此代码的最佳方法是什么,以便不会有任何重复的代码?

您能推荐使用任何特定的设计模式吗? 最明显的当然是inheritance,但由于android中的每个活动都已经扩展了Activity ,这是不可能的。

我已经想过创建另一个扩展Activity类,然后将公共变量和方法放在这个类中,然后在AddContactEditContact初始化这个类。 但是,如果这确实是最好的方法,我应该将此共享类中的所有方法和实例变量设为静态吗?

非常感谢您的宝贵时间。

如何inheritance遗产? 您可以拥有一个扩展Activity的基类,然后让另外两个类扩展它以inheritance共享function,例如:

 public class MainActivity extends Activity { //Common functionality and instance methods } public class AddContact extends MainActivity { //Has all of Main Activity's non private methods/variables } public class EditContact extends MainActivity { //Has all of MainActivity's non private methods/variables. } 

此外,如果您不希望直接使用MainActivity,您可以将其设为抽象,以确保使用子类。 这为您提供了通过共享方法/变量来减少冗余的好处,并且还允许您扩展此function以使其特定于每个子类(如果需要)。

另一种选择是使用Singleton来封装常用function。

这取决于你想要在两个活动之间分享的确切内容。 但在我看来,最好的方法是将常用function移动到Fragment中并在两个活动中使用它。 如果此function具有可视元素,则可以使用布局显示Fragment。 否则它可能是具有纯逻辑的不可见片段。

我不建议inheritance,创建一个单独的类公共代码对于可重用性真的很好,但是,请记住,从基类扩展的每个类将为具有相同目的的事物分配重复的内存,谷歌不推荐它,除非真的必须和你得到的优势是非常清楚的,你应该看看Singleton设计模式,这似乎是何时实现它的一个很好的例子,基本上你将有1个单独的实例,在不同的工作之间组件无需每次都分配新对象,只需重用已创建的对象即可。

希望能帮助到你!

问候!

 public class Contact { String name //implement the rest of contact's functionality } public class AddContact extends Activity { // Create a new instance of Contact } public class EditContact extends Activity { // Create a new instance of Contact } 

如果在尚未创建对象的情况下调用方法,则只创建静态方法