자바 에페티보 에센셜 - Imutabilidade

자바 에페티보 에센셜 - Imutabilidade

2022-10-19 last update

6 minutes reading programming java

Reduza 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.