2017-07-26 3 views
1

Ich wollte den genauen Unterschied zwischen Methodenverkettung und fließender Schnittstelle wissen. Wie ich es verstehe, führt die Methodenverkettung nur die Methoden früherer Methodenrückgabeobjekte aus, während temporäre Variablen vermieden werden. Ein Beispiel hierfür könnteUnterschied zwischen Methodenverkettung und fließender Schnittstelle

Integer.parseInt(str).intValue() 

Hinsichtlich fließend Schnittstelle sein, wobei jede Methode des Objekts durch einen Punkt gekettet ist, ohne auf die bisherigen Verfahren verwandt zu sein mit die beiden Techniken Modifikatoren Verfahren zurück zum Host zu machen Objekte, so dass mehrere Modifikatoren in einem einzigen Ausdruck wie folgt aufgerufen werden können:

new Car().StartsEngine().OpenWindow() 

ist das korrekt?

+1

http://randomthoughtsonjavaprogramming.blogspot.be/2013 /10/trainwreck-vs-method-chaining.html. Überprüfen Sie auch die Referenzen für die Martin Fowler Artikel. –

Antwort

2

Ich glaube nicht, dass es einen großen Unterschied gibt; oder besser, die beiden Konzepte sind auf verschiedenen Ebenen. Methodenverkettung ist die einfache Sache, wo Sie eine Methode direkt auf den Rückgabewert einer anderen Methode aufrufen.

Eine flüssige Schnittstelle ist eine Art, eine API zu entwerfen, um eine mehrstufige, komplexe Operation zu machen, so dass sie Prosa liest. Eine fließende Schnittstelle soll durch Methodenverkettung verwendet werden. Es kann für jeden Aufruf das gleiche veränderbare Objekt verwenden, oder es kann jedes Mal ein neues unveränderliches Objekt zurückgeben, je nachdem, was der Autor der Schnittstelle für eine gute Idee hält.

1

Fließende Schnittstellen können durch Methodenverkettung erreicht werden, aber alle Methodenverkettungen sind Fluent-Schnittstellen. In Fluent-Schnittstellen gibt die Methodenverkettung immer dieselbe Schnittstelle zurück, die von allen Verkettungsmethoden verwendet wird. Zum Beispiel:

public interface Car 
{ 
    Car StartEngine(); 
    Car OpenWindows(); 
    Car CloseWindows(); 
    Car startAC(); 
} 

Jetzt Fluent-Schnittstellen implementiert, mit Chaining wie folgt:

Car hondaCity = new HondaCity(); 
hondaCity.startEngine().openWindows().closeWindows().startAC(); 

Jetzt einfache Methode Chaining Beispiel:

Car hondaCity = new HondaCity(); 
hondaCity.getEngine(). //Get Engine Object 
      getFilter(). // get Filter Object 
      cleanFilter(); 
+0

Sie meinen ** nicht ** alle Methoden Verkettung sind Fluent-Schnittstellen. – RealSkeptic

Verwandte Themen