Делай отмену как хочешь.
Можешь её внутри X
сделать.
Суть в том, что передавая слушателей исключительно через конструктор у тебя теряется гибкость в работе со слушателями.
Единственный нормальный кейс который я вижу — это передача лямбды как слушателя, чтобы она просто жила вместе с объектом.
вот все наоборот
из проблем только то, что нельзя возобновить подписку, а отписаться можно много раз
class FooBarController(
val observable: FooBar
) {
init {
observable.observe(this.listener)
}
fun unsubscribe() {
observable.stop(this.listener)
}
}