Escolar Documentos
Profissional Documentos
Cultura Documentos
(HTTP://LABS.BLUESOFT.COM.BR)
Home (http://labs.bluesoft.com.br)/ Artigos (http://labs.bluesoft.com.br/category/artigos/) / Construindo objetos imutveis
ARTIGOS (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/ARTIGOS/)
PODCAST (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/PODCAST/)
OPORTUNIDADES (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/OPORTUNIDADES/)
CONTATO (HTTP://LABS.BLUESOFT.COM.BR/CONTATO/)
Um objeto considerado imutvel quando seu estado interno, aps ser criado, no muda. Em alguns casos o objeto considerado imutvel mesmo que um atributo
interno mude, mas o estado parea imutvel de um ponto de vista externo. Isso pode acontecer em operao que sejam lazy, por exemplo.
O uso de objetos imutveis traz muitas vantagens e vrios tipos de problemas simplesmente desaparecem.
Nesse artigo vou mostrar como criar objetos imutveis, suas vantagens e como utiliza-los no dia a dia.
Seja sempre o primeiro a ver nossas novidades Meu e-mail Quero receber por e-mail
VANTAGENS E MAIS VANTAGENS
Objetos imutveis so conveis pois eles nunca sero alterados.
Objetos imutveis so thread-safe, ento voc no ter problemas com sincronizao nem aqueles bugs aleatrios difceis de resolver quando vrias threads
alteram o mesmo objeto.
Imutabilidade torna o cdigo mais fcil de escrever, entender e dar manuteno. Tambm evita aqueles bugs que voc precisa investigar o sistema inteiro para
descobrir onde o objeto est sendo alterado.
Objetos imutveis podem ser cacheados, da mesma forma que o Java faz com as Strings
Objetos imutveis so timos candidatos a chave de Map e elemento de Set.
http://labs.bluesoft.com.br/construindo-objetos-imutaveis/ 1/5
14/07/2017 Construindo objetos imutveis - Labs Bluesoft
PARMETROS OPCIONAIS
CONTATO (HTTP://LABS.BLUESOFT.COM.BR/CONTATO/)
No exemplo anterior temos um objeto imutvel com todos os seus parmetros no construtor. Mas se alguns dos nossos parmetros forem opcionais, a opacidade
por exemplo, teremos duas opes: criar um construtor para cada situao ou passar todos os valores sempre que o objeto for construdo. Imagine fazer isso com
vrios parmetros, seria extremamente improdutivo e chato.
Para evitar essas duas situaes podemos utilizar o builder pattern (https://en.wikipedia.org/wiki/Builder_pattern) para criar o objeto.
Criaremos o nosso builder como uma inner class contendo dois construtores. Um construtor, public, contendo todos os parmetros obrigatrios e o outro, private,
que recebera o Quadrado como parmetro. Esse construtor ser utilizado para copiar o objeto e ser acessado apenas pelo mtodo toBuilder, para padronizar a
cpia.
Os mtodos do builder tero os mesmos nomes das variveis sem o prexo set, to comum em POJOs. O retorno dos mtodos ser o prprio builder, dessa forma
criamos uma interface uente.
http://labs.bluesoft.com.br/construindo-objetos-imutaveis/ 2/5
14/07/2017 Construindo objetos imutveis - Labs Bluesoft
package test;
private
(HTTP://LABS.BLUESOFT.COM.BR)
final double opacidade;
private final double tamanho;
PODCAST (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/PODCAST/)
public double getOpacidade() {
return opacidade;
}
QUEM SOMOS (HTTP://LABS.BLUESOFT.COM.BR/QUEM-SOMOS/)
public double getTamanho() {
return tamanho;
OPORTUNIDADES (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/OPORTUNIDADES/)
}
CONTATO (HTTP://LABS.BLUESOFT.COM.BR/CONTATO/)
public Builder toBuilder() {
return new Builder(this);
}
O mtodo toBuilder fornece uma forma simples e padronizada para copiar e editar um objeto imutvel. No exemplo abaixo copiamos o objeto quadrado e alteramos
a propriedade opacidade para 0.3.
CONCLUSO
http://labs.bluesoft.com.br/construindo-objetos-imutaveis/ 3/5
14/07/2017 Construindo objetos imutveis - Labs Bluesoft
Imutabilidade torna o cdigo mais fcil de escrever, entender e dar manuteno. Utilize objetos imutveis sempre que possvel, eles evitam vrios tipos de bugs.
Utilizando o Builder pattern temos uma forma padronizada para criar, copiar e editar objetos imutveis.
(HTTP://LABS.BLUESOFT.COM.BR)
Este artigo foi publicado primeiro em: brgarcia.com (http://brgarcia.com/2015/11/construindo-objetos-imutaveis/)
---
OPORTUNIDADES (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/OPORTUNIDADES/)
No perca tempo, acesse acelerato.com (http://www.acelerato.com), cadastre-se gratuitamente e descubra como podemos ajud-lo.
Post Footer automatically generated by Add Post Footer Plugin (http://www.freetimefoto.com/add_post_footer_plugin_wordpress) for wordpress.
Curtir 4 pessoas curtiram isso. Cadastre-se para ver do que seus amigos gostam.
LEAVE A COMMENT
Name
Website
Message
http://labs.bluesoft.com.br/construindo-objetos-imutaveis/ 4/5
14/07/2017 Construindo objetos imutveis - Labs Bluesoft
Pesquisar por:
Pesquisar PESQUISAR
(HTTP://LABS.BLUESOFT.COM.BR)
CATEGORIAS
PAPO RETO (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/PAPO-RETO/)
Categorias
ARTIGOS (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/ARTIGOS/)
Selecionar categoria
PODCAST (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/PODCAST/)
OPORTUNIDADES (HTTP://LABS.BLUESOFT.COM.BR/CATEGORY/OPORTUNIDADES/)
CONTATO (HTTP://LABS.BLUESOFT.COM.BR/CONTATO/)
(https://www.acelerato.com/projetos/)
TPICOS RECENTES
TAGS
http://labs.bluesoft.com.br/construindo-objetos-imutaveis/ 5/5