Method Chaining
Estamos tão acostumados com o padrão Javabean: gets, sets e propriedades privadas, que é comum não refletirmos sobre algumas decisões que tomamos ao definir as interfaces de nossas classes.
Uma técnica relativamente comum é o Method Chaining. Trocando em miúdos, bem miúdos, consiste em fazer os seus métodos set retornarem 'this'. Algumas classes da API Java funcionam assim, veja a documentação de StringBuffer, por exemplo.
E o que eu ganho com isso?
Concisão, legibilidade, clareza, praticidade…
Um código que poderia ser assim:
stringBuffer.mark(); stringBuffer.position(8); stringBuffer.reset();
fica assim:
stringBuffeer.mark().position(8).reset();
Bem melhor não?
Como fazer?
Simples, substitua isso:
public void setName(String name){
this.name = name;
}
public void setEmail(String email){
this.email = email;
}
por isso:
public User name(String name){
this.name = name;
return this;
}
public User email(String email){
this.email = email;
return this;
}
E use assim:
User u = new User().name("Fulaninho").email("fulaninho@gmail.com");
E seja feliz.
2 Responses to Method Chaining
Deixe um Comentário Cancelar resposta
Assuntos
- Arquitetura (1)
- Geral (1)
- Java (5)
- Concorrência (1)
- I/O (1)
- Testes (1)






Este recurso também é usado para fazer dsl interna, mas há de se ter cuidado pois diversas especificações se apoiam nas especificação dos javabeans ex. JSF, JSP,JPA, isso pode causar um certo desconforto no uso destes frameworks.
Cadê aquela introdução falando do seu amigo e talz?
Fica feio pra caramba, mas é viável a criação do padrão Javabean junto com o encadeamento dos métodos para atender as exigências desses frameworks.
Ou limitar o encadeamento de métodos à camada de negócio / modelo.