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?
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…
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.