Лучшая практика для передачи конфигурации каждому объекту GUI - PullRequest
1 голос
/ 17 марта 2010

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

Что было бы лучше всего для совместного использования этого объекта конфигурации между ними? Всегда проходить через конструктор или, возможно, сделать его где-нибудь как final public static и позволить каждому объекту окна обращаться к нему при необходимости?

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 марта 2010

Всегда проходите через конструктор. Избегайте изменчивой статики.

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

OTOH, большой "знает обо всем; все знают об этом", контекстный класс тоже не годится. Делает вещи небольшими, с каждым классом, делающим одну вещь (для некоторого подходящего определения "одной вещи").

0 голосов
/ 17 марта 2010

В этом случае я бы предпочел ваш второй подход. Что-то вроде:

Configuration.getCurrentConfig ();

Я также видел решение аналогичной проблемы путем создания подкласса JFrame и дальнейшего наследования:

public abstract class BasicFrame extends JFrame {

   protected BasicFrame (Map<String, String> configParams) {
      ...
   }
}

public class SomeFrame extends BasicFrame {

   public SomeFrame (Map<String, String> configParams, String title) {
      super (configParams);
      ...
   }
}
...