Альтернатива наблюдаемой модели? - PullRequest
6 голосов
/ 01 декабря 2011

Мне нужно выполнить некоторые задачи на object1, когда на object2 происходит какое-то изменение состояния.Я пытался использовать наблюдаемый шаблон в Android, я имею в виду использовать классы Observer и Observable, поэтому object1 реализует Observer и object2 расширяет Observable.К сожалению, object2 уже распространяется из другого класса, поэтому я не могу определить его как расширение Observable.

Есть ли другая альтернатива для использования этого шаблона?Может быть, другие классы, которые позволяют мне выполнять это поведение?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 01 декабря 2011

Просто добавьте к object2 поле типа Observable, к которому добавляются наблюдатели и к которому notifyObservers() вызывается, когда что-то меняется.

Это то, что подразумевается под «композицией благосклонности, а не наследования».

6 голосов
/ 01 декабря 2011

Расширение встроенного класса Observable - довольно плохой выбор для реализации шаблона наблюдателя, поскольку он нарушает вашу иерархию классов, но вы уже это знаете.

Лучшим способом было бы определить свой собственный интерфейс Observable и позволить вашему классу реализовать его. Вам также потребуется интерфейс Listener для классов слушателей

Методы, которые вам понадобятся в вашем Observable интерфейсе: addListener(Listener listener) и removeListener(Listener listener)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...