Необходимость фабрики провайдеров ViewModel - PullRequest
1 голос
/ 26 апреля 2019

Мне было интересно, зачем ViewModel с другими параметрами в конструкторе нужна фабрика провайдеров ViewModel. Почему нельзя создать экземпляр ViewModel с помощью обычного конструктора new MyViewModel(parameter1 , parameter2);

1 Ответ

1 голос
/ 26 апреля 2019

Ничто не мешает вам создавать ViewModel объекты с ключевым словом new. По сути, когда нет предоставленных параметров конструктора, это то, что Factory Provider делает внутри, но есть и другие функциональные возможности, обернутые вокруг него. Например, управление жизненным циклом. ViewModel специально привязан к конструкциям жизненного цикла, таким как фрагменты и действия. Когда все становится достаточно сложным, вам понадобятся фабрики объектов для управления зависимостями.

Для простого примера, который вы дали

val vm = MyViewModel(height=10, weight=20)

Эти объекты роста и веса легче создавать, поскольку они являются целыми числами, но что, если это сложная зависимость, такая как

val vm = MyViewModel(repo=MyRepository())

А что, если MyRepository по очереди может зависеть от модернизации, базы данных помещения, общего предпочтения и т. Д.

Вот тут-то и вступают в силу фабричные шаблоны Заводские шаблоны могут быть легко сгенерированы автоматически с помощью таких инструментов, как Dagger.

Фабричные шаблоны предназначены для сложного механизма обеспечения зависимостей.

...