簡體   English   中英

在Java中實現此的最佳方法

[英]Best way of implementing this in java

所以我有這個要求:

  • 稱為目的地的類
  • 一個名為Destinations的HashMap

Destination類具有Door類型的對象數組。 因此,基本上我從文件中讀取了一個“門”,並且每個門都有一個“目的地”屬性,該屬性告訴我它屬於哪個目的地。

我的問題是,什么更好?

a)持有Destinations的對象中的一種方法,用於檢查HashMap Destinations中是否存在新門的目標,然后將該門插入到其現有Destination中或創建新的Destination,然后插入該門。

b)覆蓋(?)Destinations HashMap的add方法,並在那里實現前面描述的功能。

c)另一種方式。

謝謝。

在Java和類似語言中,與擁有簡單的列表,映射和集合相比,我們更有可能為應用程序創建具有有意義名稱的類(就像在動態語言中那樣)。 您幾乎看不到的是有人將HashMap或ArrayList或HashSet子類化並覆蓋其add或put方法。

最“ Java式”的方法是定義一個名為Destinations的類,該類可以包含 (作為字段)目標對象的哈希圖,該哈希圖由id索引。 然后,您將僅創建對您的應用程序有意義的方法,例如

add(door, destination)

可以封裝您的游戲邏輯。 沒有人知道幕后有一張地圖(或列表或集合)。 公開地圖將意味着您的應用程序具有泄漏性抽象,您將希望避免這種情況。

也許更好:對您來說最有效的選擇

class Door

class Destination

並將所有目的地的地圖設為“目的地”字段。 在不了解您要做什么的情況下,很難說。 減少類的數量似乎是一個好主意。 您可以將地圖封裝到Destination中,並使用靜態方法來訪問所有門嗎?

現在,如果您決定制作一個單獨的Destinations類,則將封裝地圖,如下所示:

class Destinations {
    private static Map<Integer, Destination> map = ...

    public static void add(Door door, Destination destination) ...
}

使呼叫看起來像:

Destinations.add(door, destination);

另外,您的目的地地圖可以是單身人士。 獲得關於單例與實用程序類問題的意見總是很有趣。 查看最適合您的應用程序的方法。

TL; DR:將地圖隱藏在另一個類中,這樣客戶端就不會使用以下任何一種方法來獲取java.util.HashMap

  • 帶有靜態方法的實用程序類Destinations
  • 單例類DestinationInfo
  • 映射隱藏在模型對象Destination本身內的靜態字段(使用靜態方法)中。

暫無
暫無

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

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