Patrones más importantes
Singleton
Patrón de diseño creacional, permite asegurar que una clase tenga una única instancia, a la vez que proporciona un punto de aceso global a dicha instancia.
La clase Singleton declara el método estático obtenerInstancia, que devuelve la misma instancia de su propia clase, la llamada al método obtenerInstancia debe ser la única manera de obtener el objeto de Singleton.
Patrón de comportamiento que define un mecanismo de suscripción para notificar a varios objetos sobre un evento que le suceda al objeto que están obsrvando.
Estructura
El notificador notifica a los suscriptores el método de notificación específico de sus objetos
Un mecanismo de suscripción permite a los objetos suscribirse a notificaciones de eventos
PATRÓN ARQUITECTURA DE SOFTWARE
Patrones creacionales
Singlenton
Asegura que una clase tenga una única instancia, proporciona un punto de acceso global de la instancia
Prototype
Permite copiar objetos existentes sin que el código dependa de sus clases
Builder
Contruye objetos complejos. Permite producir distintos tipos y representaciones de un objeto empleando el mismo código de construcción
Abstract Factory
Produce familias de objetos relacionados sin especificar sus clases concretas
Factory Method
Objetos en superclase, las subclases alteran el tipo de objeto que se crean
Patrón MVC: Separa la lógica de negocios y la capa de representación entre sí.
https://platzi.com/tutoriales/1248-pro-arquitectura/5466-que-es-el-patron-mvc/
Controlador
Existe entre la vista y el modelo, escucha los eventos desencadenados por la vista y ejecuta. También transforma datos para hacer que la Vista y el Modelo se entiendan traduciendo la información desde la interfaz, a la vez tomará la información del Modelo y la adaptará a formatos o estructuras de datos.
Vista
Es el UI de la aplicación. Presenta los datos del modelo al usuario, genera la interfaz de la aplicación, compone pantallas, páginas, entre otros. La vista es la representación del Modelo, contiene los elementos de interacción, adaptados a la tecnología del cliente.
Modelo
Contiene los datos de dominio, almacenan información del sistema que estamos desarrollando. Encontramos la lógica del negocio de la aplicación, es decir las reglas, acciones y restricciones que nos permiten gestionar las entidades del dominio. También es el encargado de gestionar el almacenamiento y recuperación de datos y entidades del dominio (DAL - Data Acces Layes y ORMs)
Patrones de Comportamiento
Visitor
Permite separar algoritmos de los objetos sobre los que operan
Template Method
Define un esqueleto de un algoritmo en la superclase pero permite que las subclases sobrescriban pasas del algoritmo si cambiar su estructura
Strategy
Permite definir una familia de algoritmos, colocar a cada uno de ellos en una clase separada y hacer sus objetos intercambiables
State
Permite a un objeto alterar su comportamiento cuando su estado interno cambia, como si el ibjeto cambiara su clase
Observer
Permite definir un mecanismo de suscripción para notificar a varios objetos sobre cualquier evento que le suceda al objeto que están observando
Memento
Permite guardar y restaurar el estado previo de un objeto sin revelar los detalles de su implementación
Mediator
Permite reducir las dependencias caóticas entre objetos. Restringe las comunicaciones directas entre objetos, colaborando por medio de un objeto mediador
Iterator
Permite recorrer elementos de una colección sin exponer su representación subyacente(lista, pila, árbol, etc.)
Command
Convierte una solicitud en un objeto independiente que contiene toda la información sobre la solicitud
Chain of Responsability
Permite pasar solicitudes a lo largo de una cadena de manejadores, cada manejador decide si la procesa o si la para al siguiente
Patrones Estructurales
Proxy
Permite proporcionar un sustituto de posición para otro objeto
Flyweight
Permite mantener más objetos dentro de la RAM, compartiendo entre varios objetos en lugar de toda la información en cada objeto
Facade
Proporciona una interfaz simplificada a una biblioteca, un framework o cualquier grupo complejo de clases
Decorator
Permite añadir funcionalidades a objetos, colocando estos objetos dentro de objetos encapsuladores especiales
Composite
Permite componer objetos en estructuras de árbol y trabajar con ellas como si fueran objetos individuales
Bridge
Permite dividir una clase grande, en 2 jerarquías separadas (abstracción e implementación), que se desarrollan independientemente
Adapter
Permite la colaboración entre objetos con interfaces incompatibles
PATRONES DE DISEÑO DE SOFTWARE
Fuentes:
https://refactoring.guru/es/design-patterns/catalog
https://profile.es/blog/patrones-de-diseno-de-software/
Patrón: juego de herramientas que brindan soluciones a problemas en el diseño de software, ayuda a la comunicación con eficacia