观察者模式抽象与界面

Max*_*aic 8 design-patterns observer-pattern

我有观察者模式的问题.它说Observer和Subject都应该是接口.我明白为什么观察者是接口,但为什么将主题作为抽象类更好呢?难道你不能实现至少删除/注册?

Jon*_*oni 10

设计模式旨在适应应用程序的特定需求; 他们没有规定一成不变的规则.考虑到决策对其余应用程序的所有影响,特别是某些东西是抽象类还是接口.

也就是说,由于几个原因,建议接口优先于抽象类.例如,抽象类要求您使用继承,而在许多语言中,您不能从多个类继承.如果这不是您的用例的问题,请继续使用抽象类,如果您觉得它们更方便.


rob*_*lco 7

为什么不只有一个实现Subject的抽象类?使用界面只会给您更大的灵活性.从抽象类开始,它并没有真正为你买任何东西.如果每个事情都发生了很大的变化(比如跨越过程边界)那么你的Observable将会被抽象的实现所困扰.