2011-11-24 37 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

相关问题