Инкапсуляция API предпочтений Java - PullRequest
6 голосов
/ 20 октября 2008

Раньше у меня был класс пользовательских настроек для моих приложений. Для моего следующего хобби-проекта я хотел переключиться на Preferences API. Но функции put и get требуют значения по умолчанию, и я не хочу распространять значения по умолчанию во всех исходных файлах. Несмотря на то, что мой проект небольшой, я не могу представить изменение значений по умолчанию во всем исходном коде. Как вы, ребята, используете API? Я думаю об обертывании настроек API в другом классе, но тогда какой смысл использовать API, потому что он снимает бремя сохранения файла на диск, что не так сложно при использовании сериализации? Я упускаю суть?

Ответы [ 4 ]

2 голосов
/ 08 декабря 2011

тогда вы, возможно, захотите получить полный контроль над тем, как Предпочтения должны следовать желаемому хранилищу, внедрив AbstractPreferences. Вы можете увидеть реализацию на основе Linux здесь:

http://www.docjar.com/html/api/java/util/prefs/FilePreferencesImpl.java.html

Удачи!

2 голосов
/ 20 октября 2008

Вы смешиваете несколько понятий здесь. Значение по умолчанию, указанное в коде, должно быть специфичным для локальной ситуации как «разумное значение по умолчанию». Если вы хотите использовать настройки по умолчанию для всего приложения, то вам нужен поставщик настроек, который позволяет вам подключать как настройки по умолчанию, так и накладные настройки пользователя. Что-то, что может быть полезным проектом само по себе.

Да, и «разумные значения по умолчанию» - отличный способ избежать настройки, когда это не нужно, но позволяют пользователю или упаковщику предоставлять лучшие значения при необходимости.

@ комментарий, кажется, я понимаю.

Под «локальной ситуацией» я подразумеваю в контексте кода. Для вашего GUI вам нужно значение для отображения, которое представляет все, что используется потоком. Поэтому я бы использовал что-то вроде Worker.DEFAULT_TIMEOUT. Ваш работник будет использовать то же значение внутри, что и значение по умолчанию. Таким образом вы извлекаете сконфигурированное значение или значение по умолчанию для работника при настройке поведения работника.

1 голос
/ 18 июня 2010

Вы можете поместить значения по умолчанию в файл .preferences, который вы связываете в свой файл .jar (или в специализированный класс или интерфейс с константами).

Я использую его для таких вещей, как положение / размеры окон, запоминание папки по умолчанию для выбора файлов, последние открытые файлы и такие мелочи. Я могу подумать о некоторых интересных вещах, которые вы получаете «бесплатно» с настройками API:

  • делать вещи рекомендованным ОС способом; ОС может не позволить вам записывать «файлы настроек» в папку вашего приложения, и пользователям не нравится, когда их спрашивают, где на диске они хотят сохранить настройки, и вы не хотите реализовывать свою собственную логику для каждой платформы
  • Ваши данные сохраняются для каждого пользователя ОС отдельно
  • способ сохранить пользовательские данные, даже если ваше приложение удалено (или во время обновления)
  • не требуется база данных или доступ к файловой системе

Кроме того, я не люблю сериализацию и не рекомендую ее для этого. Сериализация означает, что вы должны соблюдать осторожность при смене классов в новых версиях приложения.

1 голос
/ 20 октября 2008

Было бы так сложно засунуть все ваши значения по умолчанию в один класс, чтобы они не засоряли ваш код?

В последних проектах я использовал конфигурацию общего доступа . Я посмотрел в API настроек Java, но мне нравится гибкость проекта Commons. И вам не нужно указывать значения по умолчанию!

...