代码之家  ›  专栏  ›  技术社区  ›  Syed Ahmed Jamil

观察者设计模式的主题是接口还是超类?

  •  2
  • Syed Ahmed Jamil  · 技术社区  · 7 年前

    我在coursera学习设计模式课程。他们有课程笔记来定义 Subject 观察者设计模式的超类,如下图和代码所示

    统一建模语言 enter image description here

    代码(主题) enter image description here

    现在我想 主题 主题 interface 相反是什么原因导致 主题 不是java接口,而是 Observer

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

    2 回复  |  直到 7 年前
        1
  •  4
  •   janardhan sharma    7 年前

    观察员dp是一个简单的例子。

    1. 主体是观察者观察的实体。

    2. 主体拥有观察者列表,但观察者将拥有主体。

    3. 主题的任何变化都将以列表的形式通知所有观察者。

    4. 我们也可以将主题作为接口。这一切都取决于我们执行上述几点的方式。

    enter image description here

        2
  •  6
  •   Nghia Bui    7 年前

    Subject 是一个接口,然后实现 主题 必须重新实施所有 registerObserver , unregisterObserver notify

    您可以说,您将把这些方法放入一个helper类中,以便每个 主题 可以将任务委派给此助手。但毕竟,您必须为所有派生的 班级。尽管授权代码简短明了,但这种重复仍然令人沮丧。

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