我是否正确实施了 MVP 架构?

Am I implementing MVP architecture correctly?

目前,我将 MVP 架构实施到我的一个 Activities 中。它有效,但如果我做的正确,我需要一些澄清。

在我的 Activitiy 的合同中我有

public interface MainActivityContract {
    interface View{
        void updateEventName(String eventName);
        void updateEventDate(String eventDate);
        void updateEventTime(String eventTime);
    }

    interface Presenter{     
        void setEventName();
        void setEventDate();
        void setEventTime();      
    }
}

在我的 MainActivity 中,我会调用方法

mPresenter.setEventInfo(mInfo);

来自我的 MainActivityPresenter class:

private EventDto.EventInfo eventInfo;

@Override
    public void setEventInfo(EventDto.EventInfo eventInfo) {
        this.eventInfo = eventInfo;
        setEventName();
        setEventDate();
        setEventTime();     
    }

    @Override
    public void setEventName() {
        view.updateEventName(eventInfo.getE_name());
    }

    @Override
    public void setEventDate() {
        view.updateEventDate(eventInfo.getE_day());
    }

    @Override
    public void setEventTime() {
        view.updateEventTime(eventInfo.getE_time());
    }

调用其中一个mPresenter方法时调用所有update方法是否正确?

mPresenter.setEventInfo(mInfo);

否则我将不得不一个一个地调用更新方法

mPresenter.setEventName()
mPresenter.setEventDate()
mPresenter.setEventTime()

是的,这是正确的方法,你也可以检查https://medium.com/indianic/mvp-model-view-presenter-in-android-6487b9fafcbb

正在 View 上更新 eventNameeventDateeventTime这里指的是界面,通过单个或多个方法调用应该取决于 PresenterModel 检索数据的方式,即通过单个或分别多次调用。但这不是我的重点...

您使用 MVP 模式的方式是错误的。

MVP中:

  1. PresenterModel
  2. 获取数据
  3. Presenter 使用数据
  4. 更新 View
  5. View 通知 Presenter 数据更改(if any

你的方法中

  1. ViewModel
  2. 获取数据
  3. View 使用数据
  4. 更新 Presenter
  5. Presenter 使用数据字段 eventNameeventDate 和 [=12= 更新 View ]

总结一下,用你的方法 View 也充当 Model.