El patrón Singleton asegura que una clase tenga solo una instancia y proporciona un punto de acceso global a ella. Úsalo cuando necesites exactamente un objeto para coordinar acciones en todo el sistema, como un gestor de configuración, logger o pool de conexiones.
El patrón Factory Method define una interfaz para crear objetos pero deja que las subclases decidan qué clase instanciar. Úsalo cuando quieras desacoplar la creación de objetos de su uso, facilitando extender o intercambiar implementaciones sin modificar el código cliente.
El patrón Abstract Factory proporciona una interfaz para crear familias de objetos relacionados sin especificar sus clases concretas. Úsalo cuando tu sistema deba ser independiente de cómo se crean sus productos, especialmente al trabajar con múltiples familias de productos.
El patrón Builder separa la construcción de un objeto complejo de su representación, permitiendo que el mismo proceso cree diferentes representaciones. Úsalo cuando construir un objeto requiere muchos pasos o configuraciones que varían de forma independiente.
El patrón Prototype crea nuevos objetos copiando un objeto existente (el prototipo). Úsalo cuando la creación de objetos es costosa y ya existe un objeto similar: clonar es más rápido y conveniente que instanciar desde cero.
El patrón Adapter permite que dos interfaces incompatibles colaboren envolviendo una de ellas en un objeto traductor. Úsalo cuando necesites integrar una librería de terceros, una clase legada o cualquier API cuya firma no coincida con la que espera tu código.
El patrón Decorator agrega comportamiento a un objeto de forma dinámica envolviéndolo en otro que comparte su interfaz. Úsalo cuando quieras añadir características transversales —logging, caché, validación— sin subclasificar ni ensuciar el tipo base.
El patrón Facade ofrece una interfaz simple y unificada sobre un subsistema complejo. Úsalo cuando un grupo de clases es difícil de usar directamente y solo quieres exponer las operaciones de alto nivel que el resto de la aplicación realmente necesita.
El patrón Proxy proporciona un sustituto para otro objeto con el fin de controlar el acceso a él. Úsalo para inicialización perezosa, control de acceso, caché o invocación remota: situaciones en las que quieres interceptar las llamadas sin cambiar el objeto real.
El patrón Composite permite tratar de forma uniforme objetos individuales y grupos de objetos a través de una interfaz común. Úsalo cuando tus datos forman un árbol —archivos y carpetas, nodos de UI, jerarquías organizativas— y los clientes no deberían preocuparse por si están hablando con una hoja o con una rama.