Qual padrão de projetos é este? E há como refatora-lo?

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]

  1. O padrão é o Builder. O Padrão Builder não começa com uma interface.
    O builder é um objeto normal.

  2. O uso de interface fluente com o builder é mmuuiiittoo util. Parece até que são a mesma coisa (normalmente são :lol: )

  3. 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.

  4. 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,