@nano_e_t_4

Как правильно с точки зрения ООП?

Всем привет
Пишу маленькое приложеньице (в ооп относительно недавно), столкнулся с такой логической проблей:
У меня есть gui, на нем куча кнопок. Так вот чтобы не забрасывать класс, который выстраивает это гуи, создал отдельный класс buttons, где собственно создаю кнопки, создаю и добавляю для ниух слушателей (не отражены в примере ибо долго писать. Но у почти каждой кнопки они разные) и добавляю их на фрейм. Если в примере, то можно отразить это так:
class mainGui {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
Buttons btns = new Buttons();
JButton but1 = btns.getFristButton("Puppy", but1); 
JButton but2 = btns.getSecondButton("Citty", but2);
panel.add(but1);
panel.add(but2);
frame.add(panel);
=============================
class Buttons {
String Name;
String Type;
JButton getFristButton(String name) {
    this.Name = name;
}
JButton getSecondButtons(String type) {
    this.Type = type;
}


смущает тот факт, что хочется все делать по фэн шую, а писать класс в который добавлять логику создания кнопок и возвращать не совсем объектно. Или я не прав, и такой подход в целом является нормой в ООП?
  • Вопрос задан
  • 723 просмотра
Решения вопроса 1
lxsmkv
@lxsmkv
Test automation engineer
То что вы сделали похоже на шаблон Factory (передаем параметры обьекта на вход, получаем обьект на выходе). https://ru.wikipedia.org/w/index.php?title=Factory
Все что по шаблонам - все фен-шуй. Другой вопрос выгодно ли применять тот или иной шаблон для конкретной задачи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
artem90
@artem90
TeamLead, Developer
Я бы предложил следующий подход:
- Класс формы, отвечает за создание и размещение объектов на форме, с так же вешает все обработчики.
- в форму инжектится зависимость класса-сервиса, который выполняет всю логику по выборке и сохранению и т.п.
- Если форма слишком сложная, то можно разделить создание элементов и установка обработчиков на два класса по типу как View и Controller: один будет только выстраивать форму, а втрой управлять ей.

Надеюсь, правильно понял Ваш вопрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы