Builder es un patrón de diseño creacional que permite construir objetos complejos paso a paso.
Al contrario que otros patrones creacionales, Builder no necesita que los productos tengan una interfaz común. Esto hace posible crear distintos productos utilizando el mismo proceso de construcción.
El patrón Builder también se utiliza cuando el producto deseado es complejo y se requieren varios pasos para completarlo. En este caso, será más sencillo emplear varios métodos de construcción que un único constructor enorme. El problema potencial con el proceso de creación de varias etapas es que un producto parcialmente creado e inestable puede quedar expuesto al cliente. El patrón Builder mantiene privado el producto hasta que esté totalmente creado.
En el siguiente código, vemos distintos tipos de casas (igloo y normalHouse) que son construidos por iglooBuilder y normalBuilder. Cada tipo de casa tiene los mismos pasos de construcción. La estructura directora opcional ayuda a organizar el proceso de creación.