Ничто не мешает вам создавать ViewModel
объекты с ключевым словом new
. По сути, когда нет предоставленных параметров конструктора, это то, что Factory Provider делает внутри, но есть и другие функциональные возможности, обернутые вокруг него. Например, управление жизненным циклом. ViewModel специально привязан к конструкциям жизненного цикла, таким как фрагменты и действия. Когда все становится достаточно сложным, вам понадобятся фабрики объектов для управления зависимостями.
Для простого примера, который вы дали
val vm = MyViewModel(height=10, weight=20)
Эти объекты роста и веса легче создавать, поскольку они являются целыми числами, но что, если это сложная зависимость, такая как
val vm = MyViewModel(repo=MyRepository())
А что, если MyRepository
по очереди может зависеть от модернизации, базы данных помещения, общего предпочтения и т. Д.
Вот тут-то и вступают в силу фабричные шаблоны Заводские шаблоны могут быть легко сгенерированы автоматически с помощью таких инструментов, как Dagger.
Фабричные шаблоны предназначены для сложного механизма обеспечения зависимостей.