Pessoal, estou construindo uma classe utilizando a premissa de “humane interface´s”. Porém, não sei qual o nome legítimo deste padrão de projeto. Acredito que seja o Builder, me confirmem, por favor!
Gostaria de uma ajuda, para avaliar meu código. Queria saber se está de acordo com o padrão e se há como melhora-lo.
O intúito do mesmo é apenas gerar um simples sql-string. Segue:
public interface SqlBuilder {
SqlBuilder select(String fields);
SqlBuilder from(String from);
SqlBuilder where(String condition);
}
[code]public class SqlConcreteBuilder implements SqlBuilder {
private StringBuilder product = new StringBuilder();
public SqlBuilder from(String from) {
this.product.append(" FROM "+from);
return this;
}
public SqlBuilder where(String condition) {
this.product.append(" WHERE "+condition);
return this;
}
public SqlBuilder select(String fields) {
this.product.append("SELECT "+fields);
return this;
}
public static void main(String[] args) {
SqlBuilder select = new SqlConcreteBuilder()
.select("*")
.from("tabela");
System.out.println(select);
}
@Override
public String toString() {
return this.product.toString().toUpperCase();
}
}[/code]
[quote=MrDataFlex]Pessoal, estou construindo uma classe utilizando a premissa de “humane interface´s”. Porém, não sei qual o nome legítimo deste padrão de projeto. Acredito que seja o Builder, me confirmem, por favor!
Gostaria de uma ajuda, para avaliar meu código. Queria saber se está de acordo com o padrão e se há como melhora-lo.
O intúito do mesmo é apenas gerar um simples sql-string. Segue:
[/quote]
-
O padrão é o Builder. O Padrão Builder não começa com uma interface.
O builder é um objeto normal.
-
O uso de interface fluente com o builder é mmuuiiittoo util. Parece até que são a mesma coisa (normalmente são :lol: )
-
Repare que o programador pode invocar os métodos na ordem que quiser. Com o seu exemplo isso não cria um SQL válido.
O objetivo do builder é construir outro objeto em estado válido. Se isso não acontece sempre , o builder é inutil.
-
O padrão builder normalmente vem com um método chamado build() ou alguma coisa assim,que é o método que realmente constroi o objeto final. O resto dos métodos do builder são apenas para dizer qual é o estado do objeto final
Cara,
A idéia é boa, mas hoje em dia temos artifícios (JPA) que não há necessidade de gerar este trabalho todo.
Mesmo assim, esta classe precisaria de controles para verificar a existência de cláusulas where.
Abs,