2015-04-14 14 views
1

Я хочу понять лучшие практики создания объектов в Java-программировании. Я привел пример ниже Пожалуйста, проверьте и предложите мне Orphan Objects in Java Хорошо или плохо?Orphan Objects на Java Хорошо или плохо?

У меня есть интерфейс Shape.

  1. Circle implements Shape
  2. Square implements Shape
  3. Cube implements Shape
  4. Sphere implements Shape

Подход # 1 вызывает сирота объектов, подход # 2 причины ненужные ссылки. Какой подход является наилучшей практикой?

Подход № 1

Shape shape; 
    shape = new Circle(); // CREATES CIRCLE OBJECT 
    shape.draw(); 
    shape = new Cube(); // CREATES CUBE OBJECT 
    shape.draw(); 
    shape = new Sphere(); // CREATES SPHERE OBJECT 
    shape.draw(); 
    shape = new Square(); // CREATES SQUARE OBJECT 
    shape.draw(); 

Подход № 2

Circle circle = new Circle(); 
    circle.draw(); 
    Cube cube = new Cube(); 
    cube.draw(); 
    Sphere sphere = new Sphere(); 
    sphere.draw(); 
    Square square = new Square(); 
    square.draw(); 
+0

Если ваша цель состоит в том, чтобы избежать осиротевших объектов, то ссылки, созданные путем подхода № 2, по определению не являются ненужными. – JonK

+1

«лучшая практика» по каким измерениям? Он зависит от контекста, в котором вызывается этот фрагмент кода. Вообще говоря, GC позаботится. –

+0

лично я предпочитаю второй подход, поскольку имя переменных ясное и содержательное. И не беспокойтесь о сиротском объекте, сборщик мусора справится с ними – user902383

ответ

1

Когда не нужны объекты после того, как вы назвали их метод draw, то это нормально, чтобы забыть ссылки на них. Они будут иметь право на сбор мусора, и память, которую они занимают, будет восстановлена, когда сборщик мусора сделает это.

Таким образом, если управление памятью является вашей проблемой, то объектами «сиротства» являются стандартная практика Java.

2

В Java вы создаете объекты для выполнения какой-либо задачи, и когда вы закончите с ними, вы удаляете ссылки на них, чтобы они собирали мусор. Количество ссылок на эти объекты редко связано с производительностью; как правило, проблемы возникают из:

  1. создают слишком много объектов, когда вы могли бы использовать их
  2. у вас есть ошибки в очистке ваших ссылок (утечки памяти).

Основная проблема заключается в том, как часто вы звоните new.

1

Если вы просто создаете объекты для одноразового использования, ни один из них не подходит. Даже не присвоить ссылку на один вызов, просто сделать звонок прямо:

new Circle().draw(); 
new Cube().draw(); 
new Sphere().draw(); 
... 

Все остальное это просто сбивает с толку, держа ссылку, что вы на самом деле не нужно ничего мешает читаемость.

 Смежные вопросы

  • Нет связанных вопросов^_^