una interfaz fluida un término acuñado Eric Evans y es simplemente otro nombre para el método de encadenamiento. Martin Fowler escribió un couple de articles sobre este tema, pero es más o menos el siguiente aspecto:
m_Window = window::with()
.width(l_Width)
.height(l_Height)
.title("default window")
.left(200)
.top(200)
.create();
interfaz fluida se utiliza generalmente para crear parámetros con nombre en un idioma que no sea compatible con ellos (el nombre del parámetro del idioma en C++ por ejemplo), o en Idiomas Específicos del Dominio para hacer que el código se lea con mayor fluidez.
He visto que se utilizan para todo, desde bibliotecas de procesamiento de imágenes, bibliotecas de expresiones regulares, bibliotecas 3D. Otros ejemplos incluyen la construcción de estructuras de árbol, listas u otras estructuras de datos. Todo lo que requiere la construcción de objetos complejos (carga de parámetros) puede utilizar interfaces fluidas para hacerlo más legible. Por ejemplo, comparar el ejemplo anterior a la llamada de función CreateWindow:
::CreateWindow(
"Window class",
"Window title",
dwStyle, X, Y,
nWidth, nHeight,
hWndPant, hMenu,
hInstance, NULL
);
Esto debería haberse publicado como dos preguntas separadas. –