Как поделиться, какой Locale использовать среди всех классов в Java? - PullRequest
1 голос
/ 25 ноября 2011

Я решил, что мое программное обеспечение должно выходить на международный уровень, поэтому я попросил один из классов подсказать пользователю, какую локаль использовать.К 7 другим классам я добавил параметр, чтобы получить эту информацию. Теперь, почему-то это не так.Кажется, это усложняет ситуацию.

Кажется более естественным сделать выбранную локаль «глобальной» переменной, вместо добавления параметра ко всем 7 другим классам для получения этой информации. (Вы согласны?)

Итак, я взглянул на то, что было предложено: определить публичный класс с желаемыми переменными в качестве его статических членов. (например, здесь)

В этом примере, однакозначение, которое будет совместно использоваться всеми классами, не зависит от пользовательского ввода.Я понятия не имею, как поделиться переменной, которая еще не была установлена.Есть ли кто-нибудь, кто хочет сказать мне несколько слов об этом?

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Предположим, вы хотите создать класс 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 голосов
/ 25 ноября 2011

Если это веб-приложение, вы можете поместить локаль в сеанс HTTP.

Если вы используете JSF или портлеты, в которые встроена поддержка локалей.

...