在android / java中传递信息的最佳做法

时间:2018-08-02 15:54:22

标签: java android calling-convention

嗨,我正在用android编写应用程序,想知道以下最佳方法以及每种方法的潜在优缺点,如果您要从B类调用A类中定义的方法或将信息从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 docs中,我读到了将信息从Fragment传递到Activity的首选方法是第二种方法。但是想知道为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

如果我正确理解了您的问题,这听起来更像是一个关于为什么/何时在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