observer模式参与者 subject(目标)1个 observer(观察者)1个 concretesubject(具体目标)可以是多个 concreteobserver(具体观察者)可以是多个 subject 1:n concreteobsever 也有objserver 1: n concretesubject
我觉的通过event就可以达到和Observer模式同样的效果,没有必要写的那么麻烦
目前的结构是:Subject只认识IObserver,IObserver也只认识Subject。所以各个子类之间没有耦合。换句话说,任何Subject的子类都可以attach多个并且是任何IObserver子类的对象。当然,一个IObserver的子类可以同时被多个不同的Subject的子类attach。应该是: subject 1:n IObserver 也有IObserver 1: n Subject
你的
update
与具体的subject绑定死了
也就是说所有的Observer的子类ConcreteObserver1,ConcreteObserver2
等的update方法都是和subject对象绑定死了
试想如果subject如果有子类,我打算每个ConcreteObserver1对应着concretesubject2
ConcreteObserver2对应concretesubject1你怎么处理呢
因为你在subject中已经定义死了update(this)
this 这里只能是subject
或者 是subject的子类
IOBserver定义的update(subject sender)
其中的subject 当然也可以是subject的子类
比如
ConcreteObserver1 其中update的参数打算用Concreatesubject1
ConcreteObserver2 其中update的参数打算用Concreatesubject2
ConcreteObserver3 其中update的参数打算用Concreatesubject3
我打算同时attach这三种情况
用你的方法怎么处理
因为:你的update(this)
this 只能是当前定义的类
那只能意味着:一个观察者(Observer)依赖于多个目标(subject),否则没有必要这么做
ConcreteObserver1 其中update的参数打算用Concreatesubject1
ConcreteObserver2 其中update的参数打算用Concreatesubject2
ConcreteObserver3 其中update的参数打算用Concreatesubject3
我打算同时attach这三种情况
用你的方法怎么处理
----------------------------------------------------------------
我不用处理呀!!observer子类不需要认识subject的子类呀!,请看看里氏代换原则。(你没试过怎么知道不行?!)
一个观察者(Observer)依赖于多个目标(subject),否则没有必要这么做
-----------------------------------------------------------------
subject和observer是一对多的关系。请你上机实践后再说话。我真的怀疑你不懂面向对象的基础!(说错了请别见怪)
我只是说一下自己的意见
未必对
你没明白我说的意思
“observer子类不需要认识subject的子类呀”
如果让一个observer对应多个subject(子类)的话
就必须让每个observer的子类,认识subject的子类
你现在是一个subject对应了多个observer注意:我说的是让一个observer对应多个subjectobserver也有这种情况 一个observer对应多个subject
subject(目标)1个
observer(观察者)1个
concretesubject(具体目标)可以是多个
concreteobserver(具体观察者)可以是多个
subject 1:n concreteobsever
也有objserver 1: n concretesubject
subject 1:n IObserver
也有IObserver 1: n Subject