gpt4 book ai didi

java - 观察者设计模式的主题是接口(interface)还是父类(super class)?

转载 作者:行者123 更新时间:2023-12-02 07:36:12 33 4
gpt4 key购买 nike

我正在 coursera 上的一门类(class)中学习设计模式。他们有类(class)笔记,其中将观察者设计模式的 Subject 定义为父类(super class),如下面的图像和代码所示

UML enter image description here

代码(主题) enter image description here

现在我认为 Subject 类本身是无用的,直到子类继承它并创建任何特定的主题。在这种情况下,Subject 不应该是一个 java interface 吗?为什么 Subject 不是 java 接口(interface),而 Observer 却是。

有什么具体原因吗?我对此有点困惑。

谢谢

最佳答案

如果 Subject 是一个接口(interface),那么每个实现 Subject 的类都必须重新实现所有 registerObserverunregisterObservernotify 方法,这是非常标准的。

您可能会说,您将把这些方法放入帮助程序类中,以便每个派生的 Subject 可以将任务委托(delegate)给该帮助程序。但毕竟,您必须为所有派生 Subject 类复制委托(delegate)代码。尽管委托(delegate)代码简短而直接,但重复仍然令人沮丧。

您可以在鲍勃叔叔这篇非常有趣的文章的结尾处找到这个论点:http://blog.cleancoder.com/uncle-bob/2015/01/08/InterfaceConsideredHarmful.html

关于java - 观察者设计模式的主题是接口(interface)还是父类(super class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239652/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com