Szukaj…


Uwagi

Cele

Podstawowym celem płynnego interfejsu jest zwiększenie czytelności.

Podczas wykorzystywania do konstruowania obiektów wybory dostępne dla osoby wywołującej mogą być jasno określone i wymuszone poprzez kontrole czasu kompilacji. Na przykład rozważmy następujące drzewo opcji reprezentujących kroki wzdłuż ścieżki, aby zbudować złożony obiekt:

A -> B 
  -> C -> D -> Done
       -> E -> Done
       -> F -> Done.
       -> G -> H -> I -> Done.

Konstruktor korzystający z płynnego interfejsu umożliwi dzwoniącemu łatwe sprawdzenie, jakie opcje są dostępne na każdym etapie. Na przykład A -> B jest możliwe, ale A -> C nie jest i spowodowałoby błąd czasu kompilacji.

Truth - Fluent Testing Framework

Z „Jak korzystać z prawdy” 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();

Płynny styl programowania

W stylu płynnego programowania zwracamy this z metod płynnych (ustawiających), które nie zwracałyby niczego w stylu płynnego programowania.

Umożliwia to łączenie różnych wywołań metod, dzięki czemu kod jest krótszy i łatwiejszy w obsłudze dla programistów.

Rozważ ten płynny kod:

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());
  }
}

Ponieważ metody ustawiające niczego nie zwracają, potrzebujemy 4 instrukcji w metodzie main , aby utworzyć wystąpienie Person z pewnymi danymi i wydrukować je. Dzięki płynnemu stylowi ten kod można zmienić na:

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());
  }
}

Chodzi o to, aby zawsze zwracać jakiś obiekt, aby umożliwić budowanie łańcucha wywołań metod i używać nazw metod odzwierciedlających naturalne mówienie. Ten płynny styl sprawia, że kod jest bardziej czytelny.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow