использовать класс или не использовать класс - PullRequest
0 голосов
/ 11 февраля 2011

У меня вопрос о том, должен ли я использовать класс для этой проблемы или нет.Вот мой сценарий:

Я собираюсь получать пакеты данных каждую секунду, содержащие 2 набора данных.данные A и данные B.Как только я получу данные, мне нужно пометить эти данные.Мне нужно выполнить расчеты по данным и сохранить ответы.Я думаю об использовании класса для каждого пакета данных, который приходит ко мне.И пусть у этого класса есть отметка времени и все остальное, что мне нужно.

Это хорошая идея?Есть ли лучший способ?

Я новичок в Java, я пришел с C ++, мне нужно деконструировать эти классы после того, как я закончу их использовать, или Java делает это для меня?Как только я закончу с объектом, как мне от него избавиться?

Заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 11 февраля 2011

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

Что касается необходимости уничтожать класс самостоятельно, обычно нет. Виртуальная машина Java имеет сборщик мусора, который ищет и уничтожает объекты, на которые нет ссылок. Обычно это происходит довольно эффективно в случае «управляемых» объектов (объектов, которые полностью находятся в «песочнице» программы).

1 голос
/ 11 февраля 2011

Создайте свой собственный класс. Это способ Java.

Если класс не является закрытым внутренним классом, вы должны определить его с помощью закрытых полей и методов получения / установки для доступа к ним и их обновления. Или, если вам не нужно обновлять поля, используйте только методы установки. (Это может показаться немного тяжелым с точки зрения C / C ++, но геттеры и сеттеры имеют тенденцию окупаться в долгосрочной перспективе, и компилятор JIT обычно в любом случае включает вызовы.)

Вам не стоит беспокоиться об управлении памятью. Сборщик мусора Java автоматически избавится от любых экземпляров, которые становятся недоступными. В большинстве ситуаций лучше всего позволить GC решить проблему.


Существуют альтернативы (хотя и не хорошие, ИМО):

  • Используйте общий тип карты, например HashMap или Properties, для представления объектов в виде пар имя-значение. Это плохой выбор с многих точек зрения: производительность низкая, у вас нет определенного API (для ваших «объектов»), а ваш код более хрупкий.

  • Использовать массив или тип списка. Это еще хуже, потому что у вас даже нет «имен» для полей.

  • Не преобразовывайте пакеты данных вообще, а передавайте биты отдельно. Тьфу ...

1 голос
/ 11 февраля 2011

Ну, в Java это почти все классы.

Да, это звучит подходящим для моделирования данных вашего пакета и всех операций над ним как с классом.

И нет, вам не нужно деконструировать объекты вручную, когда ничто больше не ссылается на них *, они собираются сборщиком мусора (в конце концов).

* Фактические правила немного сложнее, чем любой, любой объект, который недоступен из активного потока, считается подходящим для сборки мусора. Это означает, что вам не нужно беспокоиться о циклических ссылках между вашими объектами.

0 голосов
/ 11 февраля 2011

Вы можете использовать неизменный класс. ИМХО, это лучший способ для моделирования удаленных данных. Если вы покончили с ними, если вы разыграете их, сборщик мусора освободит вам память.

Иметь хорошую работу.

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