java - 在 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 的首选方法是第二种方法。但想知道为什么会这样?
解决方案
如果我正确理解您的问题,这听起来更像是一个关于为什么/何时在 OOP 中使用接口的问题。
最好的例子是当我们添加另一个类 C 时。如果类 C 也实现了 A.Helper,那么您可以使用第二种方法将 C 传递给 A 没有问题。如果使用第一种方法,C 不能传递给 A,因为它需要 B 类型的对象。
推荐阅读
- react-native - AWS Amplify currentAuthenticatedUser 在 React Native 中 FB 登录后为空,但是当重新加载应用程序时,currentAuthenticatedUser 返回有效用户
- angular - WebStorm 禁用 js 文件的 TSLint
- applescript - 如何将 Finder 更改为 AppleScript 中的父目录?
- java - swift中是否有像java中的密码方法?
- linux - Linux bash 脚本文件连接
- python-3.x - 如何修复当我尝试导入任何东西时看到的 Jupyter 笔记本中的错误
- css - 在悬停按钮时在按钮上添加渐变而不影响文本
- azure-active-directory - 无法更新 Azure 清单中的 appRoles
- ios - 如何在 Flutter 中将 iOS 系统对话框(如位置权限)更改为葡萄牙语?
- java - 如何在对对象列表进行排序时解决自定义比较器的意外行为?