Шаблон проектирования наблюдателя - конкретные субъекты и наблюдатели

Ссылки (Шаблоны проектирования GOF, Шаблоны проектирования Head First, http://www.dofactory.com/Patterns/PatternObserver.aspx ]), которые я прочитал относительно шаблона проектирования наблюдателя, предусматривают, что конкретный объект содержит ссылку на конкретного наблюдателя. Примерно так:

class ConcreteObserver : IObserver
{
    ConcreteSubject concreteSubjectInstance;
    //other code, etc.
} 

Теперь, если конкретный Subject сам реализует интерфейс Subject (или является производным от некоторого абстрактного класса Subject), почему бы не сделать тип в ConcreteObserver этим абстрактным / интерфейсом? Т.е.

class ConcreteObserver : IObserver
{
    ISubject concreteSubjectInstance;
    //other code, etc.
} 

Более того, почему бы просто не сделать его полем в (например) интерфейсе IObserver ?

В конечном счете, учитывая, что сам шаблон, кажется, ослабляет связь Субъекта с его Наблюдателями, почему кажется, это не продвигается при привязке наблюдателя к его теме?

enter image description here

Или нет? Я основываю это только на примерах, которые я прочитал.

7
задан James Wiseman 29 June 2011 в 15:01
поделиться