Одной из возможных причин является то, что Observable
- это конкретный класс, который вы должны подклассировать.Java имеет только одно наследование, поэтому, если у вас уже есть суперкласс, вы также не можете подкласс Observable
.
Вторая причина заключается в том, что вы часто хотите добавить к объекту несколько типов наблюдателя (слушателя).и Observer
не поддерживает это напрямую (вы можете запускать разные объекты в методе notifyObservers
, но это не так очевидно, как наличие нескольких интерфейсов слушателей, и имеет большой потенциал для ошибок и неэффективности, поскольку наблюдатели будут получать объектыне предназначен для них).