2017-10-08 130 views
0

我新的設計模式,我正在學習Observer模式的,我去了很多的網站,在那裏我發現UML圖下面觀察者模式 - 可觀察的需要總是抽象的嗎?

enter image description here

所以我的問題是關於UML或類design.If觀察者模式的目的是通知有關在主體/客體,爲什麼受試者需要是抽象不能直接成爲ConcreteSubject的狀態的變化的觀察員,如下所示:

enter image description here

什麼是dis如果我們將主題創建爲具體主題,則可能會帶來好處或違規。

回答

3

我瞭解定義抽象主題類的目的是提供觀察者訂閱和接收通知所需的屬性和方法的基本實現。

更通用的替代方案是提供接口。或者,抽象類實際上實現了一個更通用的接口,它只定義了必須實現的方法。

換句話說,提供接口的好處是你不需要知道實現它的類。 使用抽象類的好處在於,您有添加或刪除觀察者並向他們發送通知所需方法的基本實現。而你通過派生類來利用這一點。

1

製作混凝土觀察員取決於混凝土主體將解決的一個問題,但在模式的一般性質的成本[在更新方法更新(ConcreteSubject CS)類型鑄造。

具體的研究對象摘要主題(可觀察)有明確的責任劃分,即 - 實現業務邏輯,並在應用程序可觀察到的,並採取觀察員的照顧。

如果我們避免使用Subject,每個需要觀察者的業務類(可能會添加到行)將不得不重複主題的代碼。 (從另一個具體主題擴展一個具體主題違反了OO)。

最好的方法將是使用摘要主題保持擴展和代碼重用打開。