簡體   English   中英

所有已實現類中的啟動方法

[英]Starting method in all implemented classes

我是 Java 新手,有一個相當簡單的問題:

我有一個接口,有一個方法:

public interface Interface_Updatable {

    public void updateViewModel();

}

我在幾個類中實現了這個接口。 每個類當然都有那個方法updateViewModel

編輯:我在主函數中實例化這些類。 在這里,我需要為實現該接口的所有對象調用updateViewModel代碼。

有沒有一種簡單的方法可以將它結合起來? 我不想分別從每個對象實例調用每個方法並保持更新。 從長遠來看,保持更新可能會導致錯誤。

簡短的形式是:,沒有簡單的方法可以“在實現此接口的類的所有實例上調用此方法”。

至少不是以一種理智和可維護的方式。

那么你應該怎么做呢?

實際上,您幾乎從不想只是“在所有實例上調用它”,但是在應該觸發更新的事物和應該為其觸發更新的實例之間存在某種關系

例如,該方法的命名表明Interface_Updatable實例與視圖模型相關。 因此,如果他們“關心”視圖模型的更改,他們可以通過執行諸如theViewModel.registerForUpdates(this)類的theViewModel.registerForUpdates(this)將自己注冊為相關方,視圖模型可以保留所有像這樣注冊的對象的列表,然后循環在所有實例上調用updateViewModel (當然,需要確保在適當的情況下也會發生注銷)。

這是工作中的經典偵聽器模式。

但高級答案是:你幾乎從不想在“所有實例”上調用某些東西,相反,你想調用它的實例彼此之間某種關系,你需要使這種關系明確(通過某種注冊機制就像上面描述的那樣)。

沒有簡單的方法可以在實現此接口的所有類上調用此方法。 問題是您需要以某種方式跟蹤實現此接口的所有類。

一種可能的面向對象的方法是將包含對象的列表傳遞給函數,這些對象是實現Interface_Updateable接口的類的實例,然后在該列表中的每個對象上調用updateViewModel

public void updateViewModels(List<Interface_Updateable> instances) {
    for(var instance : instances) {
        instance.updateViewModel();
    }
}

暫無
暫無

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

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