#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. Итак, да, все в порядке, если ваша реализация учитывает семантику.