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

Cannot understand why interfaces provide abstraction in Java

我正在尝试按照 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();
    }
}

为什么接口要抽象,允许分离代码?没有接口不就一样了吗?

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

public presenter(View _view) {

         view = _view;
     }

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

public presenter(IView _view) {

         view = _view;
     } 

因此解耦演示者和视图。所以回答你的问题,通过使用接口,演示者不需要知道视图实际上是谁,它可以是片段、Activity 或视图对象。它所知道的只是关于通过接口可用的一组方法。这同样适用于视图中的呈现器,您通常使呈现器符合接口,视图只知道该接口,而不是实际的呈现器,再次抽象实现