Fluent Interface
ist ein weiteres Pattern, das mir in der letzten Zeit immer häufiger über den Weg gelaufen ist. Ansich ist es gar keine schlechte Sache. Was genau ein solches Fluent Interface ist, zeigt das folgende Codebeispiel:
Interface:
interface FluentPerson { FluentPerson setAddress(Address address); Address getAddress(); FluentPerson setFirstName(String firstName); String getFirstName(); FluentPerson setLastName(String lastName); String getLastName(); }
Class
class PersonImpl implements FluentPerson { private Address address; private String firstName; private String lastName; public FluentPerson setAddress(Address address) { this.address = address; return this; } public Address getAddress() { return this.address; } public FluentPerson setFirstName(String firstName) { this.firstName = firstName; return this; } public String getFirstName() { return this.firstName; } public FluentPerson setLastName(String lastName) { this.lastName = lastName; return this; } public String getLastName() { return this.lastName; } }
Diese “fast”-Bean-Klasse unterscheidet sich eben darin, dass die Setter der Klasse einen Rückgabewert auf sich selbst hat. Das erlaubt beim Setzen der Adresse ein direktes Zugreifen auf die weiteren Klassenattribute der Person-Klasse. Das FluentInterface erlaubt eine sogenannte MethodChain um die Klassenattribute “fießend” zu setzen.


