В MVP Design Pattern для Android, где мы помещаем бизнес Войти? - PullRequest
0 голосов
/ 11 января 2019

У меня было некоторое замешательство, где я должен поместить бизнес-логин между Model и Presenter. Некоторые учебники говорят, что модель поддерживает бизнес-логин, а некоторые говорят, что модель только POJO.

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Где поставить бизнес-логику, сбивает с толку Это должно быть частью модели. Я создал дополнительный слой над моделью, назвав его сервисом, который выполняет операции над моделью и имеет логику для работы с моделью. Поэтому, если в будущем я перейду с SQLite на Room DB или GreenDao ORM, просто запрос, касающийся этого, должен быть изменен, и моя бизнес-логика останется без изменений. Есть логика приложения, которая отличается от бизнес-логики, которая должна присутствовать в докладчике.

0 голосов
/ 03 апреля 2019

В MVP шаблон проектирования Модель не является нашим классом pojo, иногда мы также называем модель в качестве хранилища.

M-MODEL (СКЛАД)

V-VIEW

P-ВЕДУЩИЙ

В МОДЕЛИ (Хранилище): - его дескриптор API, операции с базой данных и т. Д.

Итак, теперь давайте назовем МОДЕЛЬ как Хранилище .

0 голосов
/ 11 января 2019

Бизнес-логика должна быть в Model. Логика приложения должна быть в Presenter

Пример:

public class MyActivity extends BaseActivity implements MyView {
    private MyPresenter mPresenter;

    @Override public onLoginResponse(LoginResultEntity entity) {
        // Handle login result
    }

    // Some where 
    mPresenter = new MyPresenter();
    mPresenter.attachView(this);
    mPresenter.login(loginResquestEntity);
}

public class MyPresenter extends BasePresenter<MyView>{
    public void login(LoginResquestEntity loginResquestEntity) {
        // Validate info ...
        ApiManager.getInstance().login(loginResquestEntity, new Callback() {
            @Override public onSuccess(LoginResultEntity entity) {
                mMvpView.onLoginResponse(entity)
            }

            @Override public onError(Throwable throwable) {
                mMvpView.onLoginResponse(null)
            }
        });
    }
}

interface MyView extends MvpView {
    void onLoginResponse(LoginResultEntity entity);
}
...