56
Не менее важным классом представления является BaseViewActivity
который является родительским для остальным представлений реализующих
интерфейс BaseView:
public
abstract
class
BaseViewActivity
<
P
extends
BasePresenter
>
extends
BaseActivity
implements
BaseView
{
private
P mPr
;
@Override
public
void
show
(
@NonNull
final
Context pContext
,
@Nullable
final
Bundle
pArguments
)
{
Intent intent
=
new
Intent
(
pContext
,
getClass
());
if
(
pArguments
!=
null
)
intent
.
putExtras
(
pArguments
);
pContext
.
startActivity
(
intent
);
}
@Override
public
void
hide
()
{
moveTaskToBack
(
true
);
}
@Override
public
void
close
()
{
finish
();
}
@Override
protected
void
onAction
()
{
onSetup
();
mPr
=
PresenterFactory
.
create
(
this
);
mPr
.
onCreate
();
}
protected
P
pr
()
{
return
mPr
;
}
protected
abstract
void
onSetup
();
}
Код 6. Базовое представление
Реализованный метод show данного класса реализует стандартную
логику отображения Activity в
экосистеме Android, метод hide прячет окно
57
приложения, close закрывает окно, но остается в стеке приложений, onAction
вызывает абстрактный
метод onSetup и далее создает Presenter и вызывает
его метод onCreate для его инициализации,
метод pr возвращает Presenter.
С данного класса начитает работать пользовательского паттерн
MVP[32].
MVP — шаблон проектирования пользовательского интерфейса, который
был разработан для облегчения автоматического модульного тестирования и
улучшения разделения ответственности в
презентационной логике
(отделения логики от отображения):
Модель (англ. Model) — предоставляет данные для
пользовательского интерфейса.
Представление (англ. View) — реализует отображение
данных (Модели) и маршрутизацию пользовательских
команд или событий Presenterʼу.
Presenter — управляет Моделью и Представлением.
Например, извлекает данные из Модели и форматирует их
для отображения в Представлении.
Обычно экземпляр Представления создаёт экземпляр Presenterʼа, передавая
ему ссылку на себя. При этом Presenter работает с
Представлением в
абстрактном виде, через его интерфейс. Когда вызывается событие
Представления, оно вызывает конкретный метод Presenterʼа, не имеющего ни
параметров, ни возвращаемого значения. Presenter получает необходимые для
работы метода данные о состоянии пользовательского интерфейса через
интерфейс Представления и через него же передаёт в Представление данные
из Модели и другие результаты своей работы.
После рассмотрения архитектуры паттерна MVP мы можем
представить базовый класс нашего презентера:
Достарыңызбен бөлісу: