无法理解为什么接口在Java中提供抽象

时间:2018-03-29 22:42:22

标签: android interface abstract mvp

我正在尝试按照MVP模式开发Android应用,因此我可以将视图与应用程序的逻辑分开。

因此,让我们举一个例子来说明我的疑虑。

public interface IView {

   public void showToast(String text);
}

public class Presenter() {

    View view;

    public presenter(View _view) {

         view = _view;
     }

    public void setCustomToast(String text) {

          view.showToast("hello");
     }
}

public class View implements IView {

    Public void showToast(String text) {
          Toast.makeText(getApplicationContext(), text, LENGTH_LONG).show();
    }
}

为什么界面提供抽象并允许分离代码?如果没有界面,它的工作方式是否相同?

1 个答案:

答案 0 :(得分:1)

要正确地分离您的演示者和视图,您不应该像在此处一样直接将View实例传递给演示者:

public presenter(View _view) {

         view = _view;
     }

正确的是传递视图实现的接口:

public presenter(IView _view) {

         view = _view;
     } 

因此解除了演示者和视图的分离。所以回答你的问题,通过使用接口,演示者不需要知道视图实际上是谁,它可以是片段,活动或视图对象。它只知道通过接口可用的方法集。同样对于视图中的演示者有效,通常使演示者符合界面,视图只知道该界面,而不是实际演示者,再次抽象实现