Организация классов Java - PullRequest
0 голосов
/ 24 июля 2011

Я делаю программу атаки по времени умножения, которая в настоящее время находится на очень ранней стадии. Я разделил его на 4 класса. MainApp , которая инициализирует другие классы и устанавливает JFrames. Настройки , который отображает экран, на котором люди выбирают, какие цифры проверять. MainWindow , где будут отображаться числа и где пользователь отвечает. Мой последний класс - Рассчитайте , где задаются вопросы и ответы. Моя проблема в том, что Рассчитать потребности, чьи флажки установлены из Настройки . Рассчитать необходимо знать, когда пользователь завершит изменение Настройки . MainWindow нужно, какие числа отображать из Вычислить . Нормально ли иметь такой большой круг занятий, или моя классовая организация не права? И поскольку Java передается по значению, не будет ли каждый класс предоставлять копию другого класса только для копии массива из 12 логических выражений, используя удвоенную память? Например. Если для Calculate требуется 10 МБ данных, это не даст MainWindow его копии в конструкторе (показанном ниже), что приведет к увеличению на 10 МБ ОЗУ, просто для получения 12 биты данных?

public MainWindow(Calculate calc) {

    super("Main Window");

    // Display Window
    pnlMaster = new JPanel(new BorderLayout());
    pnlLabels = CreateLabelArea();
    pnlButtons = CreateButtonArea();

    pnlMaster.add(pnlLabels, BorderLayout.CENTER);
    pnlMaster.add(pnlButtons, BorderLayout.SOUTH);
    this.getContentPane().add(pnlMaster);       

    // Handler 
    cHandler handler = new cHandler();
    btnNext.addActionListener(handler);
    btnQuit.addActionListener(handler);
    txtAnswer.addActionListener(handler);

    // Get Calculate class
    this.calc = calc;
}     

Ответы [ 2 ]

4 голосов
/ 24 июля 2011

Нет, объекты на самом деле являются ссылками на объект.Ссылки передаются в метод по значению (например, это копия ссылки на объект, а не копия самого объекта).

На практике это означает, что существует только одна копия данных.в приведенном выше случае, поэтому не нужно беспокоиться о дополнительной памяти.

С точки зрения правильности / неправильности дизайна вашего класса, наиболее важным является отделение логики от представления.Похоже, что вы на правильном пути с этим, но не помешало бы читать на MVC (контроллер вида модели), потому что это типичная модель для такого рода проблем.

1 голос
/ 24 июля 2011

Классы передаются по указателю в Java.

На самом деле он передает указатель на объект, а не его копию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...