Refatorando para uma Fluent Interface

5 respostas
peczenyj

Estou me baseando nesse exemplo

http://en.wikipedia.org/wiki/Fluent_interface

Codigo Atual

_presenter = new xxxPresenter();

 _presenter.View = this; // é C# ;-)

if (!IsPostBack)
{
      _presenter.OnViewInitialized();
}

_presenter.OnViewLoaded();

Proposta Via Fluent Interface (recusada, é claro, pois a resposta do arquiteto é "GAT/GAX" ... enfim... )

_fluentpresenter = new XxxPresenterFluent()
                          .setView(this)
                          .OnViewInitialized(IsPostBack) /* usa if interno , talvez desnecessário ... */
                          .OnViewLoaded();

Pergunta: Estou dourando a pilula ou estou no caminho certo?

Como isso poderia caracterizar uma DSL ?

5 Respostas

abstract

Olá, ainda não estudei sobre o assunto. Mas o guilherme tem um post legal sobre:

http://gc.blog.br/2007/09/25/refatorando-para-fluent-interface/

http://gc.blog.br/?s=fluent+interface

brunohansen

Aii show de bola!!! Que exemplo legal de fluent interface!!! (Agora até eu vou tentar aprender e usar fluent interface!)

Sem falar sobre os posts do QCon! Vou passar um tempo nesse blog!

Ae Guilherme show de contribuição! Show de blog! Parabéns!

pcalcado

É uma Fluent Interface porque você alterou o estilo da linguagem para ter algo mais leg[ovel, mais fluente mesmo.

Não é uma DSL porque a linguagem que você está usando ainda é Java, você ainda resolve problemas da mesma maneira que Java faz.

A

peczenyj:
Estou me baseando nesse exemplo

_fluentpresenter = new XxxPresenterFluent() .setView(this) .OnViewInitialized(IsPostBack) /* usa if interno , talvez desnecessário ... */ .OnViewLoaded();

Eu acho que withView(this) “flui” melhor que setView(this). De resto parece legal.

GutomCosta

pcalcado:
É uma Fluent Interface porque você alterou o estilo da linguagem para ter algo mais leg[ovel, mais fluente mesmo.

Não é uma DSL porque a linguagem que você está usando ainda é Java, você ainda resolve problemas da mesma maneira que Java faz.

Shoes,

Apesar do tópico ser antigo, não entendi sua colocação sobre Fluent Interfaces não ser uma DSL. No meu entendimento, seria uma forma de implementar uma DSL Interna, ou estou errado?
O que caracteriza uma DSL? Da forma como vc colocou somente seria uma DSL se eu estivesse criando uma nova linguagem com um novo parser?

Value
Luiz Costa

Criado 14 de novembro de 2007
Ultima resposta 1 de mar. de 2009
Respostas 5
Participantes 6