【发布时间】:2011-09-25 05:56:38
【问题描述】:
我读过的关于观察者设计模式的参考资料(GOF 设计模式、Head First Design Patterns、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 接口中的字段?
最终,鉴于模式本身似乎放松了 Subject 与其 Observers 的耦合,为什么在将 Observer 与其主题耦合时似乎没有得到提升?
是吗?我只是基于我读过的例子。
【问题讨论】:
标签: design-patterns observer-pattern