一点修改: 把Subject类的event和delegete由public改为private.

解决方案 »

  1.   

    这种方式有点问题
    你的
    update
    与具体的subject绑定死了
    也就是说所有的Observer的子类ConcreteObserver1,ConcreteObserver2
    等的update方法都是和subject对象绑定死了
    试想如果subject如果有子类,我打算每个ConcreteObserver1对应着concretesubject2
    ConcreteObserver2对应concretesubject1你怎么处理呢
    因为你在subject中已经定义死了update(this)
      

  2.   

    To:flysnowjava(大象~大象~鼻子长) 1、Subject当然是可以有子类的。2、你说的那种情况是Observer要解决的问题吗?3、写死Update有什么问题?(否则还要IObserver接口有何用??)
      

  3.   

    注意:你的update(this)
    this 这里只能是subject
    或者 是subject的子类
    IOBserver定义的update(subject sender)
    其中的subject 当然也可以是subject的子类
    比如
    ConcreteObserver1 其中update的参数打算用Concreatesubject1
    ConcreteObserver2 其中update的参数打算用Concreatesubject2
    ConcreteObserver3 其中update的参数打算用Concreatesubject3
    我打算同时attach这三种情况
    用你的方法怎么处理
    因为:你的update(this)
    this 只能是当前定义的类
      

  4.   

    既然你的观察者(Observer)的update方法把目标(subject)当作参数
    那只能意味着:一个观察者(Observer)依赖于多个目标(subject),否则没有必要这么做
      

  5.   

    //to:flysnowjava(大象~大象~鼻子长)
    ConcreteObserver1 其中update的参数打算用Concreatesubject1
    ConcreteObserver2 其中update的参数打算用Concreatesubject2
    ConcreteObserver3 其中update的参数打算用Concreatesubject3
    我打算同时attach这三种情况
    用你的方法怎么处理
    ----------------------------------------------------------------
    我不用处理呀!!observer子类不需要认识subject的子类呀!,请看看里氏代换原则。(你没试过怎么知道不行?!)
    一个观察者(Observer)依赖于多个目标(subject),否则没有必要这么做
    -----------------------------------------------------------------
    subject和observer是一对多的关系。请你上机实践后再说话。我真的怀疑你不懂面向对象的基础!(说错了请别见怪)
      

  6.   

    呵呵,没关系
    我只是说一下自己的意见
    未必对
    你没明白我说的意思
    “observer子类不需要认识subject的子类呀”
    如果让一个observer对应多个subject(子类)的话
    就必须让每个observer的子类,认识subject的子类
    你现在是一个subject对应了多个observer注意:我说的是让一个observer对应多个subjectobserver也有这种情况 一个observer对应多个subject
      

  7.   

    observer模式参与者
    subject(目标)1个
    observer(观察者)1个
    concretesubject(具体目标)可以是多个
    concreteobserver(具体观察者)可以是多个
    subject 1:n concreteobsever
    也有objserver 1: n concretesubject
      

  8.   

    我觉的通过event就可以达到和Observer模式同样的效果,没有必要写的那么麻烦
      

  9.   

    目前的结构是:Subject只认识IObserver,IObserver也只认识Subject。所以各个子类之间没有耦合。换句话说,任何Subject的子类都可以attach多个并且是任何IObserver子类的对象。当然,一个IObserver的子类可以同时被多个不同的Subject的子类attach。应该是:
    subject 1:n IObserver
    也有IObserver 1: n Subject
      

  10.   

    我发现在.net下很多设计模式都可以被简化或改善。想讨论一下在.net下observer的最简单实现是怎样的。然后再给出一个分布式或并发情况的Observer。