我正在尝试按照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();
}
}
为什么界面提供抽象并允许分离代码?如果没有界面,它的工作方式是否相同?
答案 0 :(得分:1)
要正确地分离您的演示者和视图,您不应该像在此处一样直接将View实例传递给演示者:
public presenter(View _view) {
view = _view;
}
正确的是传递视图实现的接口:
public presenter(IView _view) {
view = _view;
}
因此解除了演示者和视图的分离。所以回答你的问题,通过使用接口,演示者不需要知道视图实际上是谁,它可以是片段,活动或视图对象。它只知道通过接口可用的方法集。同样对于视图中的演示者有效,通常使演示者符合界面,视图只知道该界面,而不是实际演示者,再次抽象实现