PATRONES DE DISEÑO 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
Patrones Estructurales
Adapter
Permite la colaboración entre objetos con interfaces incompatibles
Bridge
Permite dividir una clase grande, en 2 jerarquías separadas (abstracción e implementación), que se desarrollan independientemente
Composite
Permite componer objetos en estructuras de árbol y trabajar con ellas como si fueran objetos individuales
Decorator
Permite añadir funcionalidades a objetos, colocando estos objetos dentro de objetos encapsuladores especiales
Facade
Proporciona una interfaz simplificada a una biblioteca, un framework o cualquier grupo complejo de clases
Flyweight
Permite mantener más objetos dentro de la RAM, compartiendo entre varios objetos en lugar de toda la información en cada objeto
Proxy
Permite proporcionar un sustituto de posición para otro objeto
Patrones de Comportamiento
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
Command
Convierte una solicitud en un objeto independiente que contiene toda la información sobre la solicitud
Iterator
Permite recorrer elementos de una colección sin exponer su representación subyacente(lista, pila, árbol, etc.)
Mediator
Permite reducir las dependencias caóticas entre objetos. Restringe las comunicaciones directas entre objetos, colaborando por medio de un objeto mediador
Memento
Permite guardar y restaurar el estado previo de un objeto sin revelar los detalles de su implementación
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
State
Permite a un objeto alterar su comportamiento cuando su estado interno cambia, como si el ibjeto cambiara su clase
Strategy
Permite definir una familia de algoritmos, colocar a cada uno de ellos en una clase separada y hacer sus objetos intercambiables
Template Method
Define un esqueleto de un algoritmo en la superclase pero permite que las subclases sobrescriban pasas del algoritmo si cambiar su estructura
Visitor
Permite separar algoritmos de los objetos sobre los que operan
Patrón MVC: Separa la lógica de negocios y la capa de representación entre sí.
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)
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.
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.
Patrones creacionales
Factory Method
Objetos en superclase, las subclases alteran el tipo de objeto que se crean
Abstract Factory
Produce familias de objetos relacionados sin especificar sus clases concretas
Builder
Contruye objetos complejos. Permite producir distintos tipos y representaciones de un objeto empleando el mismo código de construcción
Prototype
Permite copiar objetos existentes sin que el código dependa de sus clases
Singlenton
Asegura que una clase tenga una única instancia, proporciona un punto de acceso global de la instancia
PATRÓN ARQUITECTURA DE SOFTWARE
Patrones más importantes
Observer
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.
Un mecanismo de suscripción permite a los objetos suscribirse a notificaciones de eventos
El notificador notifica a los suscriptores el método de notificación específico de sus objetos
Estructura
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.
Estructura
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.