簡體   English   中英

設計模式-多觀察者

[英]Design Patterns- Multiple Observer

我是設計模式的新手。 我正在編寫一段代碼,其中有一個主題和多個觀察者。 主題和觀察者都有接口。 所以說,如果我有5個觀察者,是否需要用他們各自的更新方法創建5個不同的接口? 還是應該僅創建一個接口並為所有觀察者編寫五種更新方法?

通常,您只需要一個觀察者接口,所有5個觀察者類都可以實現。 觀察者對變更通知的反應將有所不同。 這是否適用於您將完全取決於您的程序結構和需求。

請注意,共享單個接口的觀察者還可以偵聽所觀察對象的不同變化,但仍使用相同的接口。 例如,如果您使用PropertyChangeListener作為觀察者接口,則可以通過檢查傳遞給觀察者的PropertyChangeEvent中返回的propertyName來建立所偵聽的內容。

但是請注意,如果觀察者正在聽的內容有很大不同,那么是的,他們可能需要一個唯一的接口。 使用Swing示例,因為這是我最了解的知識,所以有許多可用的偵聽器類和接口,包括ActionListener,MouseListener,MouseMotionListener等,盡管它們都是從公共超級接口EventListener派生的。 請注意,所有參數都將基於通用超類AWTEvent類的參數傳遞給其偵聽器。

要獲得更好的具體幫助,請考慮為我們提供有關您問題的更多詳細信息。

我需要使用各自的更新方法來創建5個不同的接口嗎? 或者我應該只創建一個接口並為所有觀察者編寫五種更新方法?

一個具有五種更新方法的界面的凝聚力似乎遠低於五個不同的界面。 但是,您說您只有一種主題(觀察者的客戶端 )。 但這取決於該客戶的凝聚力。

接口隔離原則可能在這里適用於幫助您做出決定。 如果您提供更多詳細信息,我可以提供更多意見。

如果您使用的是Java EE,我建議您使用JMS使用主題和訂閱者。 我不知道您要尋找哪種解決方案,但是如果您需要堅持並防止丟失數據,它將更加強大...

如果您需要什么,請不要猶豫。

暫無
暫無

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

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