簡體   English   中英

具有 MVC 模式的觀察者/可觀察對象

[英]Observer/observable objects with MVC pattern

我有這種情況:

一個對象是可觀察的,另一個對象是觀察者。

觀察者有一個方法update(Observable obs,Object obj)通過notifyObservers接收對象改變。當觀察者收到通知時,update 方法打印改變的對象。 我想在實現 MVC 模式的 gui 中打印結果。我正在遵循本指南MVC 模式 我的想法是讓Controller成為觀察者。 類似的東西:

public class Controller extends AbstractController implements Observer 
{
    public static final String TOTAL_HIT_COUNT_PROPERTY = "Total Hit";

    public void changeTotalHitCount(long new_total_hit_count)
    {
        setModelProperty(TOTAL_HIT_COUNT_PROPERTY, new_total_hit_count);
    }

    @Override
    public void update(Observable o, Object arg) 
    {

    }
}

但我不知道這是否是正確的實現!

觀察者模式MVC 模式是兩種不同的設計模式 - 只是為了確保我們在同一頁面上。

在 MVC(至少根據定義)模式中,當模型更改時,視圖應該會自動更新,我猜這就是您想要做的。 在這種情況下,這意味着您的觀察者應該是視圖,而不是控制器,而您的模型將是您的可觀察對象。

因此:

Observable changes --> update Observer

將在某種程度上復制您試圖在純 MVC 模式中獲得的內容:

Model changes --> update View

我並不是說這應該是做事的方式,但我認為如果您嘗試將 Java 的 Observer/Observable 應用於 MVC 模式,這可能是可行的。

觀察者模式是 MVC 的一部分。 它是MVC的一個組成部分。

觀察者模式也是熟悉的模型-視圖-控制器 (MVC) 架構模式中的關鍵部分。 來源: https : //en.wikipedia.org/wiki/Observer_pattern

MVC 模式可以看作是這三種設計模式的組合:觀察者模式、復合模式和策略模式。 這意味着 Observer 和 MVC兼容的。

在“設計模式 - 可重用設計元素”(臭名昭著的四人幫)一書中,第 1.2 節(SmallTalk MVC 中的設計模式)中,它在幾個地方提到了 MVC 如何使用觀察者模式,我在下面引用:

從表面上看,這個例子反映了一種將視圖與模型分離的設計。 但該設計適用於更普遍的問題:解耦對象,以便對一個對象的更改可以影響任意數量的其他對象,而無需更改對象了解其他對象的詳細信息。 這種更通用的設計由觀察者設計模式描述

然后在同一部分

但是MVC中的主要關系是由觀察者、復合和策略設計模式給出的。

暫無
暫無

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

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