Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Paula Santana
Paula Santana

Posted on

     

Java Efetivo Essencial - Imutabilidade

Reduza a mutabilidade das classes ao minimo

Esta é uma série baseada no entendimento de tópicos relacionados ao livro com foco no resumo.

Imutabilidade

Uma classe que não permite que suas instâncias sejam modificadas é considerada uma classe imutável. 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 classe Imutável

1 - Não forneça métodos que modifiquem o estado do objeto(mais conhecido como setters);
2 - Garanta que a classe 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;

Na prática

Image description

Image description

Como Resolver
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.

publicServicogetServico(){ServicoservicoRetorno=newServico();returnBeanUtils.copyProperties(servicoRetorno,servico);}
Enter fullscreen modeExit fullscreen mode

Mais sobre

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 implementar o método static factory e reutilizar instâncias existentes da mesma classe.

Vantagens

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.

Desvantagens

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 multiplas vezes alterações precisaremos gerar muitas cópias e isso dependendo do volume de objetos ser um ponto de atenção em relação a performance.

Finalizando

Nem sempre conseguimos garantir que a classe seja 100% imutável, mas restringirmos a mutabilidade pode ser uma boa abordagem.
Evite a criação de setters a menos que haja necessidade.
Em classes imutáveis precisamos garantir que os construtores recebam todas as informações para construir o objeto.

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

I have been working with technology since 2008, Java developer since 2014.I am a Microsoft MVP, speaker, leader and organizer of Java Girls JUG and JUG Lisbon
  • Location
    Lisbon, Portugal
  • Education
    UNIBR
  • Work
    Sênior Software engineer
  • Joined

More fromPaula Santana

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp