Java Language
Interfaz fluida
Buscar..
Observaciones
Metas
El objetivo principal de una interfaz fluida es una mayor legibilidad.
Cuando se usa para construir objetos, las opciones disponibles para el llamante se pueden hacer claramente y cumplir mediante controles en tiempo de compilación. Por ejemplo, considere el siguiente árbol de opciones que representan pasos a lo largo de la ruta para construir un objeto complejo:
A -> B
-> C -> D -> Done
-> E -> Done
-> F -> Done.
-> G -> H -> I -> Done.
Un constructor que utiliza una interfaz fluida permitiría a la persona que llama ver fácilmente qué opciones están disponibles en cada paso. Por ejemplo, A -> B es posible, pero A -> C no es y daría como resultado un error en tiempo de compilación.
Verdad - Marco de prueba de fluidez
De "Cómo utilizar la verdad" http://google.github.io/truth/
String string = "awesome";
assertThat(string).startsWith("awe");
assertWithMessage("Without me, it's just aweso").that(string).contains("me");
Iterable<Color> googleColors = googleLogo.getColors();
assertThat(googleColors)
.containsExactly(BLUE, RED, YELLOW, BLUE, GREEN, RED)
.inOrder();
Estilo de programación fluido
En el estilo de programación fluido, devuelve this
desde métodos fluidos (configuradores) que no devolverían nada en un estilo de programación no fluido.
Esto le permite encadenar las diferentes llamadas de métodos, lo que hace que su código sea más corto y más fácil de manejar para los desarrolladores.
Considere este código no fluido:
public class Person {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String whoAreYou() {
return "I am " + firstName + " " + lastName;
}
public static void main(String[] args) {
Person person = new Person();
person.setFirstName("John");
person.setLastName("Doe");
System.out.println(person.whoAreYou());
}
}
Como los métodos de establecimiento no devuelven nada, necesitamos 4 instrucciones en el método main
para crear una instancia de una Person
con algunos datos e imprimirla. Con un estilo fluido, este código se puede cambiar a:
public class Person {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public Person withFirstName(String firstName) {
this.firstName = firstName;
return this;
}
public String getLastName() {
return lastName;
}
public Person withLastName(String lastName) {
this.lastName = lastName;
return this;
}
public String whoAreYou() {
return "I am " + firstName + " " + lastName;
}
public static void main(String[] args) {
System.out.println(new Person().withFirstName("John")
.withLastName("Doe").whoAreYou());
}
}
La idea es devolver siempre algún objeto para permitir la construcción de una cadena de llamadas a métodos y usar nombres de métodos que reflejen el habla natural. Este estilo fluido hace que el código sea más legible.