Вы, наверное, слышали и встречали такую штуку, а некоторые даже писали.
экземпляр.Метод1().Метод2()
По своему измерению потоковые интерфейсы предоставляют из себя набор методов, где каждый метод добавляет или сохраняет какое-то свойство, то есть меняет инстанс.
В принципе я с этим не совсем согласен. Я считаю, что такие методы должны ставить флаги (или просто записывать входные параметры), то есть не должны выполнять работу непосредственно в месте вызова.
Как? Ну это довольно просто:
недействительный метод() {}
Меняем на
T Method() { верните это; }
Где T может быть текущим типом, может быть интерфейсом (как в оригинале было и задумано, но структуру все портируют).
Зачем? Лаконичность кода и легкость восприятия.
Напишите в комментариях, где вы используете подход Fluent-интерфейса.