Ссылки (Шаблоны проектирования GOF, Шаблоны проектирования «Сначала голова», http://www.dofactory.com/Patterns/PatternObserver.aspx), которые я прочитал относительно шаблона проектирования наблюдателя, предусматривают, что конкретный объект содержит ссылку на конкретного наблюдателя. Примерно так:
class ConcreteObserver : IObserver
{
ConcreteSubject concreteSubjectInstance;
//other code, etc.
}
Теперь, если конкретный Субъект сам реализует интерфейс Субъекта (или является производным от некоторого абстрактного класса Субъекта), почему бы не сделать тип в ConcreteObserver таким же абстрактным / интерфейсным? * Т.е. 1006 *
class ConcreteObserver : IObserver
{
ISubject concreteSubjectInstance;
//other code, etc.
}
Кроме того, почему бы просто не сделать это полем в (например) IObserver
интерфейсе?
В конечном счете, учитывая, что сама модель, по-видимому, ослабляет связь Субъекта с его Наблюдателями, почему это не поощряется при соединении Наблюдателя с его субъектом?
Или это? Я основываю это только на примерах, которые я прочитал.