шаблоны проектирования Java в свинг - PullRequest
2 голосов
/ 07 декабря 2010

У меня есть ряд статических служебных методов этой формы:

StringBuffer Util.doA(String arg0, String arg1, SomeEnum e);  
StringBuffer Util.doB(String arg0, String arg1);  
StringBuffer Util.doC(String arg0, String arg1, String arg2,String arg3);  
StringBuffer Util.doD(String arg0, String arg1, String arg2,String arg3, AnotherEnum e);  
etc

Я хочу отобразить JDialog, который создается динамически, например, через конструктор или другой шаблон, и после нажатия кнопки я хочу, чтобы в зависимости от типа диалога вызывался соответствующий служебный метод.
Например. Если JDialog имеет значение type A, то Actionlistener кнопки должен вызвать Util.doA, передавая в качестве аргументов данные из полей ввода, а если JDialog имеет значение type B, я хочу, чтобы actionlistener кнопки вызывал Util.doB и т. Д.
Типы A, B и т. Д. Мои пользовательские типы. Не являются обязательными для использования. Я просто хочу, чтобы они различали каждый JDialog.
JDialog типа A отличается от JDialog типа B в некоторых полях ввода. Но общий внешний вид похож.
Всего существует около 20 типов и 20 соответствующих утилит.
Есть ли у меня стандартный шаблон этой проблемы?
Я начал расширять JDialog, чтобы каждый пользовательский JDialog создавал себя правильно, а метод actionlistener вызывал соответствующий служебный метод, но в итоге я получил 20 новых классов.
Поэтому я подумал, если есть лучший подход к этому. Есть идеи?

Спасибо

1 Ответ

2 голосов
/ 07 декабря 2010

Поместите соответствующий метод util в 20 типов.Если есть какое-либо дублирование между типами, вы можете переместить его в суперкласс.

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

...