为什么字段observers
,方法Attach
、Detach
和Notify
都在接口(interface) Subject
,而方法 GetState
和 SetState
以及字段 SubjectState
在具体子类 ConcreteSubject
中?为什么成员按原样分布在主题接口(interface)和具体子类中?
为什么方法Update
在Observer
接口(interface)中,而字段subject
和observerState
在具体子类中具体观察者
?
为什么成员会原样分布在观察者接口(interface)和具体子类中?
主体和观察者之间似乎并不对称。
例如,为什么字段observers
属于接口(interface)Subject
,而字段subject
属于ConcreteObserver
?
谢谢。
最佳答案
Subject 接口(interface)中的 GetState 和 SetState 方法将使 Subject 接口(interface)依赖于依赖对象的更新方式。这违反了依赖倒置原则。
Subject 接口(interface)所做的只是附加一个具体的主题并通知观察者。具体对象的状态如何变化与此无关。这就是为什么 getState 和 setState 不是主题接口(interface)的一部分的原因。
observeState 不是 Observer 接口(interface)的一部分的类似原因。
关于c++ - 为什么有些方法属于主题/观察者接口(interface),而另一些方法属于主题/观察者具体子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498688/