Хороший стиль для создания одного и того же объекта несколько раз - PullRequest
2 голосов
/ 11 января 2012

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

//This puts ship in new location.
spaceShipLocation location = new PhyiscsEngine();

Считается ли плохим стилем повторять это 3 раза в коде, или я должен обернуть его в методе?
(моя интуиция говорит нет).

p.s это для введения в курс информатики.

Ответы [ 5 ]

5 голосов
/ 11 января 2012

Если вам нужно создать экземпляр класса, просто продолжайте и сделайте это.Завершение каждого оператора new Foo() в методе сделает ваш код ужасным для чтения и обслуживания.

Кроме того, поскольку вы упомянули «хороший стиль», в соглашениях об именах Java указано, что имена классов должны начинаться с заглавной буквы и использоватьдело верблюда.spaceShipLocation (если предположить, что это класс из-за фрагмента кода) на самом деле должно быть SpaceShipLocation.

2 голосов
/ 11 января 2012

Это зависит от того, что вы понимаете под «тем же»:

  1. Равно: a.equals(b)
  2. Идентично: a == b

У вас обычно есть два простых варианта (среди различных более сложных):

  1. Равен: переопределить PhysicsEngine.equals()hashCode()!).
  2. Идентично: сделать PhysicsEngine singleton и получить доступ к одиночному экземпляру с помощью статического метода, такого как PhysicsEngine.getInstance(). Чтобы пользователи не могли создавать новые экземпляры, вы должны создать конструктор PhysicsEngine private
0 голосов
/ 11 января 2012

Синглтоны считаются вредными

Если вы обнаружите, что «обновляете» класс внутри другого (особенно многократно), было бы лучше внедрить интерфейс этого класса.

0 голосов
/ 11 января 2012

Эффективная Java предлагает нам рассмотреть статические фабрики ..

When there is no need to subclass…
• And one or more of the following
– Significant performance advantage exists
– Need flexibility to return different types
– Can avoid making classes public
– Need control over instances
0 голосов
/ 11 января 2012

[ Поскольку ваш вопрос мне не ясен, я представляю два решения с моей стороны]

1) Ваш инструктор хочет, чтобы вы использовали Шаблон дизайна прототипа - для использования существующего объекта для создания нового.

  • избегайте затрат, связанных с созданием нового объекта стандартным способом (например, используя ключевое слово 'new'), когдаэто слишком дорого для данного приложения.

2) Если вам нужно иметь один и тот же экземпляр объекта во всей системе .Тогда Singleton Pattern является вашим решением.

  • используется для реализации математической концепции синглтона, ограничивая создание экземпляров класса одним объектом.Это полезно, когда ровно один объект необходим для координации действий в системе.

Пример кода вы найдете в статьях Википедии.

...