2010-12-07 2 views
2

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

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, который создается динамически, например, через построитель или другой шаблон, и как только кнопка нажата, я хочу, чтобы соответствующий метод утилиты вызывался в зависимости от типа диалога.
E.g. Если JDialog имеет значение type A, инициатор действия кнопки должен вызывать Util.doA, передавая данные аргументов из полей ввода, и если JDialog имеет значение type B, я хочу, чтобы инициатор действия кнопки вызывал Util.doB и т. Д.
Типы A, B и т. Д. - это мои пользовательские типы. Не обязательно использовать. Я просто хочу, чтобы они различали каждый JDialog.
JDialog типа A отличается от JDialog типа B в некоторых полях ввода. Но общий вид похож.
Всего существует около 20 типов и 20 соответствующих методов использования.
Есть ли стандартный шаблон для этой проблемы? У меня есть?
Я начал расширять JDialog, чтобы каждый пользовательский JDialog создавал себя правильно, и метод actionlistener вызывает соответствующий метод утилиты, но в итоге я получаю 20 новых классов.
Так что я думал, что если есть лучший подход к этому. Любые идеи?

Спасибо

+1

Я не знаю о вас, но, например, 'JDialog A', когда я реализую' actionPerformed() ', я буду называть' Util.doA (String arg0, String arg1, SomeEnum e); 'и я буду продолжать для каждого JDialog. –

+0

@ The Elite Gentleman: Как уже упоминалось, я сделал это, как вы говорите. Но в итоге я получил 20 новых классов (по одному для каждого диалога). Я подумал, что, возможно, для этого было характерно сокращение классов. – Cratylus

ответ

2

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

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

Смежные вопросы