2011-11-24 41 views
1

我決定我的軟件需要國際化,所以我讓其中一個類提示用戶使用哪個語言環境。對於其他7個班級,我添加了一個參數來獲取這些信息。現在,不知何故,這感覺不對。這似乎讓事情變得複雜。如何在Java中的所有類中共享使用哪種語言環境?

它似乎更自然,使所選擇的區域設置一個全局變量,而不是添加參數,所有7個其他類在這方面採取的信息。(你同意嗎?)

所以我接過來一看建議:定義一個具有所需變量的公共類作爲它的靜態成員。 (for example here)

但是在這個例子中,所有類之間共享的值是獨立於用戶輸入的。我不知道如何分享尚未設置的變量。有沒有人想對我說幾句話?

回答

2

假設您想創建一個GlobalSettings類。您可以執行以下操作。

class GlobalSettings { 
    private static Locale locale = Locale.US; 

    public static Locale getLocale() { 
    return locale; 
    } 

    public static void setLocale(Locale newValue) { 
    locale = newValue; 
    } 
} 

然後,從任何地方,你可以調用GlobalSettings.getLocale()。例如,您可以更復雜一些,例如使用私有字段語言環境的GlobalSettings的單個實例,然後您可以輕鬆地模擬或替換單元測試。

+0

Thx,我會盡快回復,看起來像我正在尋找的解決方案.. – FMolivierH

+0

路易斯,你讓我成爲一個快樂的人! 作爲一個初學者,我沒有意識到你可以創建一個類並使用它而不創建任何實例。我現在儘快回到頭腦的第一本書!再次感謝!順便說一句,如果這樣定義全局變量並不壞,還是這會被認爲是不好的做法,這是否會成爲一個例子? – FMolivierH

+0

我仍然會盡量減少全局變量的使用。區域設置案例可能是合理使用案例之一,因爲它大部分時間都是隻讀的。實際上,將它插入到多個類中可能並不是一個好的解決方案,因爲您只需要它在UI類中,而不是在業務邏輯中。 – Luis

0

如果它是一個Web應用程序,您可以將語言環境放入HTTP會話中。

如果您使用的是JSF或Portlet,則您已構建語言環境支持。

+0

這是Eclipse中的一個java項目,以.jar的形式發佈 – FMolivierH

相關問題