Qual a diferença entre Fluent Interfaces e Method Chaining?

4 respostas
tnaires

Bom dia pessoal.

Estava lendo um texto do Martin Fowler sobre DSLs internas, e vi que ele trata Fluent Interfaces e Method Chaining como recursos distintos. Embora concorde com isso intuitivamente, não consegui identificar a diferença conceitual entre ambos.

Alguém poderia por favor explicar a diferença, caso exista?

Abraços

4 Respostas

rodrigoallemand

Bem, pelo que eu entendo, Method Chaining só diz respeito a vc retornar o objeto que detem o método para criar invoações em linha, o exemplo usado pelo próprio Fowler…

HardDrive hd = new HardDrive(); hd.setCapacity(150); hd.setExternal(true); hd.setSpeed(7200);

new HardDrive().capacity(150).setExternal(true).speed(7200);

Fluent Interface já é bem mais proximo de uma DSL, chegando as vezes até a ser confundida… acho, que no exemplo acima, uma Fluent Interface chagaria perto de…

HardDrive.newExternal().withCapacity(150).withSpeed(7200);

A diferença é muito sutil, apenas deixando a Fluent Interface mais proxima a um “dialogo”, por exemplo. Acho que a diferença ai é a necessidade (ou não) de utilização de nomes de métodos mais especializados…

sergiotaborda

tnaires:
Bom dia pessoal.

Estava lendo um texto do Martin Fowler sobre DSLs internas, e vi que ele trata Fluent Interfaces e Method Chaining como recursos distintos. Embora concorde com isso intuitivamente, não consegui identificar a diferença conceitual entre ambos.

Alguém poderia por favor explicar a diferença, caso exista?

DSL Interna é o conceito , method channing é a implementação. Ou seja, method channing é a base “fisica” para conseguir obter o “cocnceito” de uma DSL Interna. Um outra forma de implementação de DSL seria, por exemplo, definição de operadores o que em java não é possivel ainda - mas é em outras linguagens permitindo cirar DSL ainda mais ricas.

tnaires

Entendido. Obrigado pelas respostas.

pcalcado

Segundo Fowler, Fluent Interface é basicamente um outro nome para Internal DSL. Method Chaining é uma técnica que vem do Smalltalk e era muito pouco usada em Java (a exceção do Hibernate) até que o conceito de builders meio que virou mainstream.

Criado 16 de setembro de 2008
Ultima resposta 16 de set. de 2008
Respostas 4
Participantes 4