Шаблон наблюдателя в Java без наследования - PullRequest
0 голосов
/ 02 июля 2018

В чем проблема с реализацией шаблона 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?

...