java-在某些情况下,紧密耦合的片段在Android中可以吗?

在实现“片段到活动”通信时,通常讲的示例是:

MyActivity extends Activity implements MyInterface {
  ...
  @Override
  public void myMethod() {
  // Do something....
  }
  ...
}

MyFragment extends Fragment {
  ...
  private void aMethod() {
    ((MyInterface) getActivity()).myMethod();
  }
  ...
}

事实是,在我的项目中,很多时候片段仅以“分而治之”的方式用于分解不同模块中的现有活动(可能是在重构过程中,当活动变得过于复杂时).将这些片段中的一个附加到另一个活动(不同于从中提取片段的活动)将毫无意义.

因此,在我的情况下,我通常以:

MyActivity extends Activity {
  ...
  void myMethod() {
  // Do something....
  }
  ...
}

MyFragment extends Fragment {
  ...
  private void aMethod() {
    ((MyActivity) getActivity()).myMethod();
  }
  ...
}

因此,可怕的问题是:如果仅在该活动中始终使用Fragment,为什么还要使用接口?这是不好的做法吗?在这些情况下使用接口有什么优势?

解决方法:

我认为这不是一个坏习惯.使用界面时您要解决什么问题?您尝试预见将片段与其他活动一起使用的情况.如果这没有发生,那么您的界面只会增加复杂性,而不会带来任何好处.

另一个好处可能是定义了片段可以在活动上调用的方法,因此您的接口定义明确.但是,这样做的好处值得商bat.

此外,我通常将活动和片段按功能分组在一个包中.因此,如果我正在编写此代码,则将myMethod包设为私有,这显然无法通过接口完成.因此,它甚至可以改善封装性.

上一篇:vue+openlayers学习:加载天地图


下一篇:开源WebGIS开发3——初识openlayers