我想实现观察者模式,我希望类X能够观察类A和B中的更新。
X派生自抽象基类XObs,它具有update()函数,将枚举作为发生的事件的参数。
这里的逻辑问题是X需要知道A和B中的哪一个发送了更新,X无法从枚举参数中确定。
向update()添加另一个参数的优缺点是什么,它告诉A和B中哪一个发送了更新?还有哪些方法可以解决这个问题? (我宁愿不为A和B创建一个基类,并在update()中发送一个this指针,因为A和B是完全不同的。)
谢谢,
托马斯
答案 0 :(得分:1)
a和b的公共基类不必具有任何不同的功能 - 它只需要用来表示A和B是Observable这一事实。在这个意义上,A和B并不是“完全不同”,它们是相同的。
答案 1 :(得分:0)
我看到以下选项:
update()
- 问题是,您需要在update()
中向下转换以检测参数是否为A或B,这使解决方案变得脆弱update()
- 这与前一个非常相似,只是面向对象少了