54
return
new
NewsFragment
();
case
NEWS_ITEM_VIEW:
return
new
NewsItemFragment
();
case
DIRECTIONS_VIEW:
return
new
DirectionsFragment
();
case
DIRECTIONS_ITEM_VIEW:
return
new
DirectionItemFragment
();
case
CONTACTS_VIEW:
return
new
ContactFragment
();
case
ABOUT_US_VIEW:
return
new
AboutFragment
();
default
:
throw
new
IllegalArgumentException
(
"Can't find a view"
);
}
}
}
Код 3. Фабрика представлений
Данная фабрика является реализацией паттерна фабричный метод[30],
который позволяет нам получить готовый экземпляр вида без явного
инстанцирования объекта, что позволяет скрывать
способ его создания. Так
как классы вида у нас реализую один
интерфейс BaseView мы можем
создавать и возвращать их без каких либо проблем, потому что программист
не будет знать с каким именно типом объекта он работает, что делает
программу более гибкой, легко модифицируемой и расширяемой.
Приступим к рассмотрению
интерфейса BaseView который
представляет возможность работать универсально с классами представлений:
public
interface
BaseView
{
void
show
(
@NonNull
final
Context pContext
,
@Nullable
final
Bundle
pArguments
);
void
show
(
@NonNull
final
Context pContext
,
@Nullable
final
Bundle
pArguments
,
int
pRequestCode
);
void
show
();
void
hide
();
void
close
();
}
Код 4. Интерфейс BaseView
55
Данный интерфейс является
важной частью приложения, благодаря
которому приложение можно будет легко расширять,
добавляя новые
представления без больших усилий, и временных затрат,
что является
важным для разработки мобильных приложений. Его реализую многие
представления приложения, но реализация находятся в
основном в базовых
классах данных представлений. Как мы могли
заметить BaseActivity не
реализует данный интерфейс, и для этого есть некоторые причины, например
стартовое окно приложения, вызывает система, и
сами мы его запускать не
будем, так зачем нам тогда реализовывать данный интерфейс?
Класс представления SplashActivity наследует от BaseActivity, но не
реализует
интерфейс BaseView, так как в данной ситуации это не нужно.
Достарыңызбен бөлісу: