簡體   English   中英

Observer設計模式的主題是接口還是超類?

[英]Subject of Observer design pattern an interface or a super class?

我正在研究課程中的課程設計模式。 他們有課程筆記,他們將觀察者設計模式的Subject定義為超類,如下圖所示

UML 在此輸入圖像描述

代碼(主題) 在此輸入圖像描述

現在我認為Subject類本身是無用的,直到子類從它繼承並創建任何特定主題。 在那種情況下, Subject不應該是一個java interface嗎? Subject不是java接口但是Observer是什么。

是否有任何具體原因。 我對此有點困惑。

謝謝

如果Subject是一個接口,那么實現Subject每個類都必須重新實現所有registerObserverunregisterObservernotify方法,這些方法非常標准。

您可以說您將這些方法放入一個幫助器類中,以便每個派生的Subject都可以將任務委派給該幫助器。 但畢竟,您必須復制所有派生Subject類的委托代碼。 雖然授權代碼簡短而直截了當,但重復仍然令人沮喪。

你可以在這篇非常有趣的Bob叔叔文章的末尾找到這個論點: http//blog.cleancoder.com/uncle-bob/2015/01/08/InterfaceConsideredHarmful.html

觀察者DP很簡單。

  1. 主題是觀察者觀察的實體。

  2. 主體是單一實體,觀察者可以不止一個。

  3. 主題具有列表觀察者,但觀察者將具有主題。

  4. 主題中的任何更改都將通知所有觀察者主題以列表的形式存儲。

  5. 我們也可以將Subject作為界面。 一切都取決於我們實施上述觀點的方式。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM