В чем проблема с реализацией шаблона Observer без базовых классов / интерфейсов, например, с Runnable:
public ObservableClass
{
List<Runnable> observers;
public void add(Runnable r) { observers.add(r); }
public void notify() { // forloop and observers[i].run(); }
}
public ObserverClass
{
ObservableClass observable;
public void listen()
{
observable.add(new Runnable() {
@Override
public void run() {
// do something here
}
});
}
}
Я спрашиваю о проблемах, если это "уродливо" или "лениво".
Например, одна проблема, которую я вижу, состоит в том, что мы не можем напрямую передавать данные наблюдателю (но если у нас есть доступ к этим данным в Observable, мы все равно можем использовать их внутри нашего RUnnable).
Каковы недостатки использования такого кода вместо создания базового класса Observable и некоторого интерфейса Observer?