[英]Best way of implementing this in java
所以我有這個要求:
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.