Предназначен в качестве своего рода общего вопроса, но сначала я расскажу вам о моей конкретной проблеме:java - Сколько классов слишком много? Когда целесообразно добавлять новые классы?
Я нахожу GUI для своей программы на данный момент для программы, которая будет иметь форму рамки с различными виджетами (ярлыками, текстовыми полями и т. д.), размещенными на нем. Первоначально он будет использовать библиотеку javax.swing
, но я накладываю слой абстракции между библиотекой и самим графическим интерфейсом, чтобы упростить создание веб-приложения, которое делает то же самое.
Я хотел бы иметь один класс, который представляет собой макет графического интерфейса: то есть он должен содержать всю информацию о том, где различные ярлыки, кнопки и т. Д. Размещаются на панели содержимого. На данный момент, реализация я рассматриваю заключается в следующем:
class Layout
{
public MyLabel titleLabel;
public myTextField sequenceTextField;
[...]
public void drawTitleLabel()
{
titleLabel = new MyLabel("This is the title.");
titleLabel.setLocation(wherever);
titleLabel.draw();
}
public void drawSequenceTextField()
{
sequenceTextField = new MyTextField();
[...]
sequenceTextField.draw();
}
[...]
public void drawGuiFrame()
{
drawTitleLabel();
drawSequenceTextField();
[...]
}
}
Поэтому я объявляю каждый виджет на панели содержимого в качестве поля класса Layout
, а затем создать методы drawWidgetName
, которые привлекают каждого виджета. Наконец, я создаю метод, который вызывает каждый из методов draw...
, чтобы нарисовать весь графический интерфейс.
Это кажется неправильным. Методы draw...
чувствуют, что они должны быть методами самих отдельных виджетов, а не крупномасштабной компоновки всего графического интерфейса. Это говорит о том, что я должен создавать отдельные классы TitleLabel
, SequenceTextField
и т. Д., Каждый из которых имеет метод draw
, а затем просто имеет метод drawGuiFrame
в классе Layout
, который вызывает все эти методы draw
(я мог бы даже создать абстрактный класс, который эти новые классы может расширяться).
Этому было бы несколько других непосредственных преимуществ. Предположим, я хотел включить систему флажков, а также мои метки и текстовые области. Тогда я мог бы объявить это как свой собственный класс и дать ему свойства isOptionA
, isOptionB
и т. Д., Чтобы записать, какой флажок был отмечен.
Но я немного неохотно реализую GUI таким образом, по двум причинам. Во-первых, создание так много новых классов загромождает кодовую базу множеством небольших файлов .java
. Во-вторых, это были бы очень «одноразовые» классы: я бы никогда больше не использовал код, поскольку классы были бы разработаны исключительно для этого конкретного графического интерфейса.
Итак - сколько классов слишком много? Можно ли создать много новых классов, которые будут использоваться только один раз, потому что вы чувствуете, что должен быть классами? Как я уже сказал, хотя я приветствую советы, специфичные для этой конкретной проблемы, я также ищу более общие указания о том, когда уместно добавлять новые классы.
Если вы хотите, чтобы меньшее количество классов пробовали на другом языке. – Kevin
Это, кажется, правильный подход в Java. –
Нет ни одного правильного пути, кроме множества неправильных путей. Пока не беспокойтесь об этом - поскольку вы приобретете опыт, вы получите «чувство» в этом вопросе. –