OnDemand - Novo Design Pattern

Caros,

Depois de anos no ramo de desenvolvimento de sistemas, cheguei à conclusão que só precisamos de um único Design Pattern.

Por isso criei o pattern OnDemand. Ele está centrado em uma regra básica. Ele faz tudo o que você precisa, sob demanda.

É simples, basta ter um interface igual à abaixo:

public interface OnDemand { public Object onDemand(Object obj); }

Segue exemplo de implementação de qualquer coisa que você pode imaginar como este pattern:

public class CalculoAreaRetangulo implements OnDemand { public Object onDemand(Object obj) { double[] args = (dobule[]) obj; double a = args[0]; double b = args[1]; return a * b; } }

CalculoAreaRetangulo calc = new CalculoAreaRetangulo(); double area = (Double) calc.onDemand( new double[]{ 10, 20 } );

Outro exemplo:

public class CadastroPessoaDAO implements OnDemand { public Object onDemand(Object obj) { Object[] args = (Object[]) obj; String action = (String) args[1]; Pessoa p = (Pessoa) args[0]; // salva o objeto "p" com Hibernate ou faz outra coisa de acordo com o "action" } }

CadastroPessoaDAO dao = new CadastroPessoaDAO(); dao.onDemand( new Object[]{ pessoa, "save" } ); dao.onDemand( new Object[]{ pessoa, "delete" } );

Viu como é simples? Um único pattern atende a todos os propósitos da mesma forma.

Daí teríamos um sistema OnDemand Oriented. E cria-se um novo modelo de desenvolvimento.

Pelo que pesquisei, ele é totalmente aderente ao Extreme Go Horse.

ps: aos desavisados, obviamente isto é uma grande brincadeira.

KKKKKKKKKKKKKKKKKKKKKKKKKKk

Eu também acho que esse aí tem o selo de qualidade GHP :smiley:

Evolução: Typed OnDemand

public interface OnDemand<T> { T onDemand(T obj); }

Será a nova tendência do mercado. Já vejo novos frameworks, middlewares e uma onda de produtos e serviços.

Ele se parece com todos os outros patterns.

[quote=tnaires]Evolução: Typed OnDemand

public interface OnDemand<T> { T onDemand(T obj); }[/quote]

Assim não funciona para todos os casos. Deve haver types diferentes para parâmetro e retorno :slight_smile:

Teria de ser:

public interface OnDemand<P, R> { R onDemand(P obj); }

A onda já comeuçou.

e você é o culpado por isso :stuck_out_tongue:

Bah, isso me lembra os eventos dos delphi…rsrsrs

Chuck Norris approves it!

Isso cheira a alguma manutenção de código que você teve que fazer e achou a pérola… conta aí, vai!

Os códigos ruins que achei estão aqui: http://www.guj.com.br/java/30384-evgd-codigos-toscos

Daniel,

Tal pérola não brota de uma mente assim, sem inspiração nenhuma (ou estarei errado??? )

=P

São anos de experiência, meu caro… rsrsrs

O Daniel conseguiu expressar sua raiva em ironia…rs

Por isso que eu digo que o Go Horse é uma estupenda metodologia…o resto é bullshit!

poxa, na época que eu trabalhava com o Daniel ele não tinha inventado tal façanha!

parabéns Daniel, bem vindo ao Gang of Four, quando sair o livro vou pegar um autógrafo contigo ;D

kkkkk… fala garoto, ainda na mesma empresa?
Sou da Gang of Myself.

danieldestro,

parabéns pela sua contribuição, é com muito orgulho que venho comunicar que você foi aceito no GOP (Gang of POG) :smiley:

continue assim! Pra que criar um monte de classes para implementar os padroes do GOF? crie um onDemand e pronto! genial!

Também criei meu próprio pattern.

Chama-se TransformerOnTransformer, o pattern consistem em vc eliminar elementos duplicados de maneira simples clara e objetiva.

No exemplo abaixo temos um problema, a lista tem 2 elementos duplicados.

List<String> nome = new ArrayList<String>():
nome.add(“A”);
nome.add(“B”);
nome.add(“C”);
nome.add(“A”);

Mas agora vem o pattern

Set<String> nomeCorrect = new HashSet<String>(nome); --> elementos duplicados removidos.
nome = new ArrayList(nomeCorrect);

Esse e um exmplo simples, no projeto em que participo criei uma superClasse, ficou bacana.

Pelo ao menos é um POG sabendo oque esta fazendo !!! Te dando uma moral …