Наблюдатель как наблюдаемый в шаблонах проектирования

#oop #design-patterns

#ооп #дизайн-шаблоны

Вопрос:

Можно ли использовать Observer в качестве Наблюдаемого для другого наблюдателя? Я имею в виду что-то вроде этого:

 TotalPrice (observator)
    ItemPrice  (observator / observable for TotalPrice)
        ItemCharacteristic1 (observable for ItemPrice)
        ItemCharacteristic2 (observable for ItemPrice)
        ItemCharacteristic3 (observable for ItemPrice)
    ServicePrice  (observator / observable for TotalPrice)
        ServiceCharacteristic1 (observable for ServicePrice)
        ServiceCharacteristic2 (observable for ServicePrice)
        ServiceCharacteristic3 (observable for ServicePrice)
  

или для этого есть лучший шаблон проектирования?

Ответ №1:

И наблюдатель, и наблюдаемый являются интерфейсами. Даже в языках, которые не допускают множественного наследования, таких как C #, все равно можно реализовать оба интерфейса. И действительно существует такая реализация из коробки, по соглашению, известному как Subject. Итак, да, все в порядке, если ваша реализация учитывает семантику.