首页 > 解决方案 > 在 android/java 中传递信息的最佳实践

问题描述

嗨,我正在用 android 编写一个应用程序,如果您想从 Class B 调用 Class A 中定义的方法或将信息从 Class A 传递到 B,想知道下面介绍的每种方法的最佳实践和潜在优缺点

方法 1:将方法 A 作为参数传递。

class A {
    B object;
    A(B object) {
        this.object = object;
    }
    void someMethod() {
        object.someOtherMethod();
    }
}
class B {
    void someOtherMethod(){
        ...
    }
}

方法2:定义接口。

class A {
    Helper helper;
    A(Helper helper) {
        this.helper= helper;
    }
    void someMethod() {
        helper.someOtherMethod();
    }
    interface Helper {
        void someOtherMethod();
    }
}
class B implements A.Helper {
    @Override
    void someOtherMethod(){
        ...
    }
}

在 android 文档中,我读到将信息从 Fragment 传递到 Activity 的首选方法是第二种方法。但想知道为什么会这样?

标签: javaandroidcalling-convention

解决方案


如果我正确理解您的问题,这听起来更像是一个关于为什么/何时在 OOP 中使用接口的问题。

最好的例子是当我们添加另一个类 C 时。如果类 C 也实现了 A.Helper,那么您可以使用第二种方法将 C 传递给 A 没有问题。如果使用第一种方法,C 不能传递给 A,因为它需要 B 类型的对象。

进一步阅读:https ://softwareengineering.stackexchange.com/questions/145437/why-use-an-interface-when-the-class-can-directly-implement-the-functions


推荐阅读