
자바 에페티보 에센셜 - Imutabilidade
2022-10-19 last update
6 minutes reading programming javaReduza a mutabilidade das classes ao minimo
Esta é uma série baseada no entendimento de tópicos relacionados ao livro com foco no resumo.
이뮤타빌리다드
Uma classe que não permite que suas instâncias sejam modificadas é 고려다우마 클래스는 무한합니다. Ou seja, cada informação contida em um objeto durante seu ciclo de vida não é modificado.
Existe uma facilidade em projetar, Implementar e utilizar classes IMUTÁVEIS, além de promover uma maior segurança e evitar muitos erros decorrente da alterações de objetos durante seu ciclo de vida.
Receita para class Imutável
1 - Não forneça métodos que modifiquem o estado do objeto(mais conhecido como setters);
2 - Garanta que não possa ser extendida(quando tornamos a classe final);
3 - Faça com que os campos/atributos sejam finais e privados;
4 - Não deixe que campos/atributos mutáveis sejam acessados por suas Referências;
나 프라티카


코모 리졸버
No caso anterior podemos realizar cópias defensivas, para gerarmos uma nova Referência e não expor a Referência que esta no objeto.
public Servico getServico() {
Servico servicoRetorno = new Servico();
return BeanUtils
.copyProperties(servicoRetorno, servico);
}
메스 소브레
Os objetos imutáveis são thread-safe, não exigem sincronização, o que é muito posivito em cenários de paralelismo, ou seja, quando várias threads acessam o mesmo objeto simultâneamente.
É interessante também que essas classes podem implementationar o metodo static factory e reutilizar instâncias existentes da mesma classe.
유리한 점
Os objetos imutáveis são ótimos para construir novos objetos. Pois garantimos que esse objeto não mudará.
Os objetos imutáveis fornecem atomicidade de falha de graça,pois o estado nunca muda, o que evita inconsistências geradas por mudanças no estado do objeto.
단점
Porém uma desvantagem é que muitas vezes quando precisamos fazer modificações do objeto, por ser imutável precisamos gerar cópia dele e por isso em cenários onde temos que realizar multiplasos õzes alteritaço 볼륨 relação 공연.
피날리잔도
Nem semper conseguimos garantir que a classe seja 100% immutável, mas restringirmos a mutabilidade pode ser uma boa abordagem.
Evite a criação de setters a menos que haja necessidade.
Em class imutáveis precisamos garantir que os construtores recebam todas as informações para construir o objeto.