Избегайте создания ненужных объектов
Это серия, основанная на понимании тем, связанных с книгой, с упором на аннотацию.
Начало…
В книге говорится о важности повторного использования предметов, особенно когда новый предмет выполняет ту же функцию.
Кроме того, он подчеркивает важность неизменяемости объектов, поскольку это еще больше упрощает повторное использование.
В качестве примера он использует класс String, который, помимо неизменяемости, является отличным примером повторного использования в нашей повседневной жизни.
Строка
//exemplo A
// Neste exemplo o Java irá verificar se já existe uma instância na memória com a mesma sequência de caracteres
String nomeA = "Paula";
//exemplo B
//Neste exemplo será criada uma nova instância em memória apesar de já termos uma instância com a mesma sequência de caracteres
String nomeB = new String("Paula");
Как?
Одним из способов избежать ненужного создания объектов является использование статических методов фабрики вместо конструкторов в неизменяемых классах.
Хотя мы можем сделать это в мутабельных классах, мы должны учитывать, что они могут изменяться в процессе использования, поэтому они могут потерять свою цель повторного использования.
Если для создания объекта требуется много работы, стоит подумать о его кэшировании, чтобы облегчить его использование.
Дополнительные ситуации
В книге приводятся внутренние примеры Java, использующие эту предпосылку и другие части, которые были воссозданы и использованы для повышения производительности.
Но я бы сказал, что еще один приведенный пункт, который мы часто используем на ежедневной основе, — это использование автобоксинга.
Автобоксинг и автоунбоксинг — это использование примитивов с упакованными примитивными типами.
Рассмотрим пример ниже.
Автобоксинг
// O código abaixo terá um problema de desempenho pois toda vez que a variável i que é primitiva for somada a variável soma que é um tipo primitivo empacotado, ou seja uma classe,é criada uma nova instância.
Integer total = 1;
for (int i = 0; i < 100; i++) {
total += i;
}
// O livro deixa claro que devemos sempre preferir o uso de primitivos e evitarmos o uso de autoboxing involuntário no nosso código.
Случаи, которых следует избегать
Использование этого подхода в некоторых сценариях должно быть оценено, он применим только в некоторых ситуациях, особенно в сложных конструкциях объектов, как, например, в случаях с пулом объектов. В книге даже упоминается в качестве примера пул соединений базы данных, что в данном случае стоимость получения этого объекта стоит его повторного использования, но не всегда его стоит использовать повторно, мы должны анализировать ситуацию в каждом конкретном случае.
Анализируйте, когда использовать
Другой обсуждаемый момент заключается в том, что этот пункт книги противоречит другому пункту, который поощряет защитные копии, и он объясняет, что в этом сценарии важно иметь в виду, что защитные копии позволяют избежать проблем через ошибки и недостатки безопасности, в то время как повторное использование экземпляров имеет в качестве цели стиль и производительность.Что сделает пункт о защитных копиях более важным, чем избегание создания объектов.