Hoje iremos ver como utilizar as anotações
@Builder e
@Value do
framework Lombok, visando melhorar a forma de criação de objetos.
Utilizando a anotação @Builder
O nome vem do Pattern Builder, que é um pattern que visa a criação de objetos, ou seja é um pattern de Criação.
Vamos analisar a classe abaixo:
1
2
3
4
5
6
7
| @Getter
@Builder
public class Cliente {
private String nome;
private String cnpj;
private String endereco;
}
|
O arquivo compilado irá ter a seguinte estrutura:
|
Resultado da compilação utilizando @Builder. |
No exemplo acima, notamos que o Lombok criou uma classe interna chamada
ClienteBuilder, seguindo os preceitos do
pattern, agora podemos criar um objeto Cliente utilizando uma forma fluente, assim deixando o código mais simples e funcional, como abaixo:
1
2
3
4
5
| Cliente.builder()
.nome("Nome do Cliente")
.cnpj("1234567890")
.endereco("São Paulo")
.build();
|
Quando trabalhamos com a criação de modelos de domínio complexos, onde cada entidade possui vários relacionamentos e atributos o uso dessa abordagem ajuda muito.
Utilizando a anotação @Value
Um outro recurso interessante do Lombok é a anotação @Value, com ela podemos criar objetos imutáveis, este tipo de objeto, são aqueles que após criados, não podem ter seu conteúdo alterado, os principais exemplos que temos desse tipo de objeto são as classes String, Integer, Calendar, etc.
Na plataforma Java, para criarmos objetos imutáveis temos que utilizar a palavra reservada final, evitar o uso de setters, e toda lógica de criação deve ser realizada no momento da construção do objeto.
1
2
3
4
5
6
7
| @Value
@Builder
public class Cliente {
private String nome;
private String cnpj;
private String endereco;
}
|
Perceba que adicionamos a anotação
@Value e removemos a
@Getter, pois o seu comportamento é justamente marcar a classe e seus atributos como
final, criar todos os
getters necessários e criar os métodos
equals(),
hascode() e
toString().
|
Resultado a compilação da classe usando @Value e @Builder. |
O uso dessa classe fica da mesma forma do exemplo com
@Builder, mas agora temos certeza de estarmos trabalhando com um objeto imutável, em conjunto de uma forma fluente de criação de objetos.
1
2
3
4
5
6
7
8
9
10
11
12
13
| public class CriacaoCliente {
public static void main(String[] args){
Cliente cliente = Cliente.builder()
.nome("Titulo Cliente")
.cnpj("1234567890")
.endereco("Endereço Cliente")
.build();
System.out.println(cliente);
}
}
|
Utilizando essas boas práticas conseguimos ter um código Java limpo e de simples evolução.
Até a próxima.
Referências
Comentários
Postar um comentário