Разделение действий на отдельный пакет в JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Разделение действий на отдельный пакет в Java

Сообщение Anonymous »

Недавно я работал над курсовым проектом курса Java-программирования в моем университете, но после его окончания я решил, что хочу систематизировать его и расставить все по своим местам. Однако я столкнулся с проблемой отделения действий от остального кода.
Вот код App.java:

Код: Выделить всё

import java.awt.BorderLayout;

import javax.swing.JTextArea;

import gui.AddPanel;
import gui.Frame;
import gui.InputPanel;
import gui.MainPanel;
import gui.MultipleSelectPanel;
import gui.SelectPanel;

public class App
{
public static void main(String[] args) throws Exception
{
Frame frame = new Frame("Garden Planner");
String[] options = {"Vegetable", "Fruit", "Flower"};
MainPanel mainPanel = new MainPanel("Select Plant", options);

frame.add(mainPanel, BorderLayout.WEST);

AddPanel vegetableAddPanel = new AddPanel(
new InputPanel("Enter Vegetable kind", 20),
new InputPanel("Enter the color of the Vegetable", 20)
);

AddPanel fruitAddPanel = new AddPanel(
new InputPanel("Enter Fruit name", 20),
new InputPanel("Enter the color of the Fruit", 20)
);

String[] intensities = {"VeryStrong", "strong", "middle", "weak", "veryWeak"};
String[] days = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
String[] hours = generateHours();

AddPanel flowerAddPanel = new AddPanel(
new InputPanel("Enter Flower name", 20),
new InputPanel("Enter the color of the Flower", 20),
new SelectPanel("Smell intensity of the Flower", intensities),
new MultipleSelectPanel("watering date/time", days, hours)
);

InputPanel durationPanel = new InputPanel("Duration", 10);

flowerAddPanel.panels[flowerAddPanel.panels.length - 1].add(durationPanel);

JTextArea textArea = new JTextArea(21, 35);
textArea.setEditable(false);

frame.setVisible(true);
}

static String[] generateHours()
{
String[] hours = new String[48];
for (int i = 0; i < 24; i++)
{
if (i % 2 == 0)
{
hours[i] = String.valueOf(i / 2) + ":00 AM";
}
else
{
hours[i] = String.valueOf(i / 2) + ":30 AM";
}
}
for (int i = 24; i < 48;  i++)
{
if (i / 2 - 12 == 0)
{
hours[i++] = "12:00 PM";
hours[i] = "12:30 PM";
continue;
}
else if (i % 2 == 0)
{
if (i / 2 - 12 != 0)
{
hours[i] = String.valueOf(i / 2 - 12) + ":00 PM";
}
}
else
{
hours[i] = String.valueOf(i / 2 - 12) + ":30 PM";
}
}
return hours;
}
}
Я пытался это сделать, но для этого потребуется написать что-то вроде этого:

Код: Выделить всё

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MainPanelAction implements ActionListener {
private PanelAction panelAction;
private Frame frame;
private AddPanel vegetableAddPanel;
private AddPanel fruitAddPanel;
private AddPanel flowerAddPanel;

public MainPanelAction(PanelAction panelAction, Frame frame, AddPanel vegetableAddPanel, AddPanel fruitAddPanel, AddPanel flowerAddPanel) {
this.panelAction = panelAction;
this.frame = frame;
this.vegetableAddPanel = vegetableAddPanel;
this.fruitAddPanel = fruitAddPanel;
this.flowerAddPanel = flowerAddPanel;
}

@Override
public void actionPerformed(ActionEvent e) {
panelAction.performAction(frame, vegetableAddPanel, fruitAddPanel, flowerAddPanel);
}
}
Теперь, если я сделаю это для каждого своего действия, это создаст ненужное количество объектов, которые занимают память без причины, и замедлит работу программы из-за времени, необходимого для создания эти объекты.
Я могу ошибаться, потому что большая часть моих знаний в области программирования связана с C++, и я мало практиковался в Java, поэтому решил спросить здесь.
Вот ссылка на репозиторий GitHub для полной версии проекта: https://github.com/abdomody35/Java-Term-Project

Подробнее здесь: https://stackoverflow.com/questions/784 ... ge-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»