Если ваш FooService
не принимает какие-либо параметры через геттер для его инициализации, вы можете использовать object
для этого:
object FooHolder {
val foo: FooService = FooService(...)
}
В противном случае ваш шаблонКажется, просто отлично, альтернатива будет использовать переменную Nullable вместо lateinit
, но они по сути одинаковы:
private var foo: FooService? = null
override fun getService(): FooService {
if (foo == null) {
foo = FooService(...)
}
return foo!!
}