Lucas_Camara 22 de jul. de 2016 1 like
Dando uma pesquisada, parece que é um design pattern: Builder Pattern .
Dragoon 22 de jul. de 2016 1 like
Tem o Builder Pattern :
Classe:
package Classes ;
public class Carro {
private final int portas ;
private final String cor ;
public int getPortas () {
return portas ;
}
public String getCor () {
return cor ;
}
public Carro ( int portas , String cor )
{
this . portas = portas ;
this . cor = cor ;
}
public static class Builder
{
private int portas ;
private String cor ;
public Builder setPortas ( int portas )
{
this . portas = portas ;
return this ;
}
public Builder setCor ( String cor )
{
this . cor = cor ;
return this ;
}
public Carro getCar ()
{
return new Carro ( this . portas , this . cor );
}
}
}
Utilização :
Carro carro = new Carro
. Builder ()
. setCor ( "Branco" )
. setPortas ( 4 )
. getCar ();
E tem Interface Builder :
Classe:
package Classes ;
import java.util.ArrayList ;
import java.util.List ;
public class Item {
private List < String > items ;
private int Numero ;
public List < String > getItems () {
return items ;
}
public int getNumero () {
return Numero ;
}
public Item addItems ( String nome )
{
if ( items == null )
items = new ArrayList <> ();
items . add ( nome );
return this ;
}
public Item setNumero ( int numero )
{
this . Numero = numero ;
return this ;
}
}
Utilização:
Item item = new Item ()
. addItems ( "Item A" )
. addItems ( "Item B" )
. addItems ( "Item C" )
. setNumero ( 100 );
São bem parecidos e a lógica de encadear métodos é o mesmo, o que difere é que usam nomenclaturas de código um pouco diferente. Recomendo utilizar a Interface Fluent, pelo fator simplicidade de código e desempenho.
misterzire 22 de jul. de 2016 1 like
No livro effective java tem um item especifico sobre esse assunto onde ele orienta a utlizar Builder em vez de construtores quando o construtor necessitar de muitos parâmetros.