#1
Permite copiar objetos existentes sin que el código dependa de sus clases.
#2
Permite construir objetos complejos paso a paso. El patrón nos permite producir distintos tipos y representaciones de un objeto empleando el mismo código de construcción.
#3
Proporciona una interfaz para crear objetos en una superclase, mientras permite a las subclases alterar el tipo de objetos que se crearán.
#4
Permite asegurarnos de que una clase tenga una única instancia, a la vez que proporciona un punto de acceso global a dicha instancia.
#5
Permite producir familias de objetos relacionados sin especificar sus clases concretas.