Skip to content

Instantly share code, notes, and snippets.

@RogelioCR311
Last active April 10, 2024 23:53
Show Gist options
  • Save RogelioCR311/bee7b2ada96e1cefe60ffe6ecbd98354 to your computer and use it in GitHub Desktop.
Save RogelioCR311/bee7b2ada96e1cefe60ffe6ecbd98354 to your computer and use it in GitHub Desktop.

Factory Method

El objetivo del patrón Factory Method es proporcionar una interfaz para la creación de objetos en una clase base, permitiendo a las subclases alterar el tipo de objetos que se crearán. Esto promueve la independencia entre el código que utiliza los objetos y los detalles específicos de su creación, favoreciendo así la flexibilidad y la extensibilidad del código.

Codigo de Ejemplo

Abstract Factory

El objetivo del patrón Abstract Factory es proporcionar una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas. Esto permite que un cliente trabaje con las fábricas abstractas para crear objetos relacionados sin necesidad de conocer las implementaciones específicas de dichos objetos. Este patrón promueve la modularidad, la flexibilidad y la fácil extensión del código al permitir intercambiar familias de objetos completas sin cambiar el código cliente.

Codigo de Ejemplo

Patron Builder

El objetivo del patrón Builder es separar la construcción de un objeto complejo de su representación, permitiendo crear diferentes tipos y configuraciones de objetos mediante un proceso de construcción paso a paso. Esto facilita la creación de objetos complejos, mejora la legibilidad del código y proporciona flexibilidad en la creación de objetos con múltiples variaciones.

Codigo de Ejemplo

Patron Prototype

El objetivo del patrón Prototype es permitir la creación de nuevos objetos duplicándolos a partir de un prototipo existente, evitando así la necesidad de crear subclases para cada tipo de objeto. Esto facilita la creación de nuevos objetos mediante la clonación de prototipos predefinidos, lo que puede mejorar el rendimiento y reducir la complejidad del código, especialmente en situaciones donde la creación de objetos es costosa o compleja.

Codigo de Ejemplo

Patron Singleton

El objetivo del patrón Singleton es garantizar que una clase tenga solo una instancia y proporcionar un punto global de acceso a esta instancia. Esto es útil cuando se necesita tener exactamente una instancia de una clase en toda la aplicación para controlar el acceso a recursos compartidos, como conexiones a bases de datos, logs, o configuraciones. El patrón Singleton garantiza que esta instancia única se crea solo cuando sea necesario y se reutiliza en toda la aplicación, evitando así problemas de concurrencia y reduciendo el uso de recursos.

Codigo de Ejemplo

Patron Adapter

El objetivo del patrón Adapter es permitir que objetos con interfaces incompatibles trabajen juntos. Esto se logra mediante la creación de un adaptador que actúa como un puente entre dos interfaces diferentes, convirtiendo la interfaz de uno en la interfaz esperada por el otro. Esto facilita la reutilización de componentes existentes y la integración de sistemas que de otra manera no podrían interactuar directamente.

Codigo de Ejemplo

Patron Bridge

El objetivo del patrón Bridge es desacoplar una abstracción de su implementación, permitiendo que ambos puedan variar independientemente. Esto se logra mediante la separación de una interfaz de abstracción de su implementación, lo que permite a ambas evolucionar por separado. Esto promueve la flexibilidad y la extensibilidad del código al permitir que se agreguen nuevas abstracciones o implementaciones sin modificar el código existente.

Codigo de Ejemplo

Patron Composite

El objetivo del patrón Composite es tratar a los objetos individuales y a las composiciones de esos objetos de manera uniforme, permitiendo que las estructuras de árbol sean tratadas de la misma manera que los elementos individuales. Esto se logra mediante la creación de una jerarquía de clases donde tanto los elementos individuales como las composiciones de elementos implementan una interfaz común. Esto simplifica el diseño y la manipulación de estructuras jerárquicas al permitir operaciones recursivas y uniformes en todos los elementos, independientemente de su nivel de composición.

Codigo de Ejemplo

Patron Decorator

El objetivo del patrón Decorator es adjuntar comportamiento adicional a un objeto dinámicamente, proporcionando una alternativa flexible a la herencia para extender la funcionalidad de una clase. Esto se logra envolviendo el objeto original dentro de uno o más decoradores que implementan la misma interfaz, lo que permite añadir o modificar comportamientos sin afectar a otros objetos del mismo tipo. El patrón Decorator promueve el principio de apertura/cerrado (open/closed), permitiendo la extensión de clases sin modificar su código fuente.

Codigo de Ejemplo

Patron Facade

El objetivo del patrón Facade es proporcionar una interfaz unificada simplificada para un conjunto de interfaces más complejas y subyacentes en un sistema. Esto se logra creando una clase que actúa como punto de entrada único para interactuar con diferentes componentes del sistema, ocultando la complejidad y los detalles de implementación de esos componentes. El patrón Facade facilita el uso de un sistema al proporcionar una interfaz más intuitiva y fácil de usar, reduciendo la dependencia de los clientes en los detalles internos del sistema.

Codigo de Ejemplo

Patron Flyweight

El objetivo del patrón Flyweight es minimizar el uso de memoria o recursos compartiendo instancias de objetos similares entre múltiples contextos, en lugar de crear instancias nuevas cada vez que se necesitan. Esto se logra mediante la separación de la información intrínseca (compartida) y extrínseca (única) de los objetos. El patrón Flyweight permite la creación de un conjunto limitado de objetos reutilizables que pueden ser compartidos por múltiples contextos, lo que reduce la carga en la memoria y mejora el rendimiento, especialmente en situaciones donde se manejan grandes cantidades de objetos con características similares.

Codigo de Ejemplo

Patron Proxy

El objetivo del patrón Proxy es proporcionar un sustituto o representante de otro objeto para controlar el acceso a él. Esto puede implicar restringir el acceso al objeto original, realizar operaciones adicionales antes o después de acceder al objeto real, o proporcionar una implementación más eficiente del objeto original. El patrón Proxy se utiliza comúnmente para agregar una capa de indirección entre el cliente y el objeto real, lo que permite controlar el acceso, agregar funcionalidades adicionales o mejorar la eficiencia en situaciones como la carga diferida de objetos costosos o la implementación de seguridad.

Codigo de Ejemplo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment