Mind map
patrones de diseño
Map content
patrones de diseño
Es una forma reutilizable de resolver un problema común
Ventajas de usar los patrones de diseño
- te ahorran tiempo
- te ayudan a estar seguro de la validez de tu codigo
- establecen un lenguaje en comun
clasificación
- Creacionales
- Facilitan la tarea de creación de objetos
- Abstract Factory
- Nos provee una interfaz que delega la creación de un conjunto de objetos relacionados sin necesidad de especificar en ningún momento cuáles son las implementaciones concretas
- ventajas
- Aísla las clases de implementación
- Hace fácil el intercambio de familias de productos
- Fomenta la consistencia entre productos
- desventajas
- Para añadir un nuevo productos, se requiere la implementación de el interfaz y todos sus métodos
- Factory Method
- Expone un método de creación, delegando en las subclases la implementación de este método
- ventajas
- Se gana en flexibilidad
- Se facilitan futuras ampliaciones
- Se facilita, en cuanto a que se hace natural, la conexión entre jerarquías de clases paralelas
- desventajas
- Se obliga al cliente a definir subclases de la clase "Creador" sólo para crear un producto concreto y esto puede no ser apropiado siempre
- Builder
- Separa la creación de un objeto complejo de su estructura, de tal forma que el mismo proceso de construcción nos puede servir para crear representaciones diferentes
- ventajas
- facilita la gestión del flujo de control durante la creación de objetos complejos
- desventajas
- alto grado de acoplamiento entre el objeto Builder
- Singleton
- limita a uno el número de instancias posibles de una clase en nuestro programa, y proporciona un acceso global al mismo
- ventajas
- Acceso controlado a la única instancia
- Espacio de nombres reducido
- Permite un número variable de instancias
- desventajas
- Dificultad para realizar testing
- Promociona el alto acoplamiento
- Restricción de ejecuciones paralelas
- Prototype
- Permite la creación de objetos basados en “plantillas”. Un nuevo objeto se crea a partir de la clonación de otro objeto
- ventajas
- permite obtener la copia de un objeto en ejecucion
- permite decidir si las copias creadas son a fondo o superficiales
- desventajas
- clonar un elemento no es sencillo de implementar
- estructurales
- Especifican la forma en que unas clases se relacionan con otras
- Adapter
- Permite a dos clases con diferentes interfaces trabajar entre ellas, a través de un objeto intermedio con el que se comunican e interactúan.
- ventajas
- Facilidad para redefinir el comportamiento de la clase adaptada
- Simplicidad
- desventajas
- Dificultad para redefinir el comportamiento de la clase adaptada
- Bridge
- Desacopla una abstracción de su implementación, para que las dos puedan evolucionar de forma independiente
- ventajas
- Desacoplando la interfaz de la implementación
- Extensibilidad mejorada
- Ocultar detalles de la implementación al cliente
- desventajas
- hace el codigo mas extenso y complejo
- Composite
- Facilita la creación de estructuras de objetos en árbol, donde todos los elementos emplean una misma interfaz
- ventajas
- Simplifica notablemente al cliente
- Favorece la extensibilidad
- desventajas
- Puede hacer el diseño peligrosamente genérico
- Decorator
- Permite añadir funcionalidad extra a un objeto sin modificar el comportamiento del resto de objetos del mismo tipo
- ventajas
- Más flexibilidad que la herencia estática
- Evita que las clases de arriba de la jerarquía estén repletas de funcionalidades
- desventajas
- Un decorador y sus componentes no son idénticos
- Muchos objetos pequeños
- Facade
- es un objeto que crea una interfaz simplificada para tratar con otra parte del código más compleja
- ventajas
- facilitando así el uso del subsistema
- Se promueve un acoplamiento débil entre el subsistema y sus clientes
- desventajas
- el caso en que varios clientes necesiten acceder a subconjuntos diferentes de la funcionalidad que provee el sistema, podrían acabar usando sólo una pequeña parte de la fachada
- Flyweight
- Una gran cantidad de objetos comparte un mismo objeto con propiedades comunes con el fin de ahorrar memoria
- ventajas
- la reducción en el número total de instancias
- reduce la cantidad de estado intrínseco por objeto
- si el estado extrínseco es computado (calculado) o almacenado
- desventajas
- Se introducen costes en tiempo de ejecución asociados a las transferencias
- Proxy
- Es una clase que funciona como interfaz hacia cualquier otra cosa
- ventajas
- Se introduce un nivel de indirección en el acceso al objeto
- Facilita otra optimización
- desventajas
- introduce un nivel de induracion adicional
- Un Proxy virtual puede realizar optimizaciones, como la creación de objetos bajo demanda
- Comportamiento
- gestionan algoritmos,relaciones y responsabilidades entre objeros
- Command
- Son objetos que encapsulan una acción y los parámetros que necesitan para ejecutarse
- ventajas
- Desacopla el objeto que invoca la operación del que conoce como realizarla
- Los objetos Command pueden ser manipulados y extendidos como cualquier otro objeto
- Es fácil añadir nuevos Commands porque no tenemos que cambiar las clases existentes
- desventajas
- incrementa el numero de clases por cada comando implementado
- Chain of responsibility
- se evita acoplar al emisor y receptor de una petición dando la posibilidad a varios receptores de consumirlo. Cada receptor tiene la opción de consumir esa petición o pasárselo al siguiente dentro de la cadena
- ventajas
- Reduce el acoplamiento
- Añade flexibilidad para asignar responsabilidades a objetos
- desventajas
- Dado que las peticiones no tienen un receptor explícito, no hay garantía de que sean manejadas una petición también puede quedar sin tratar cuando la cadena no está configurada correctamente
- Interpreter
- Define una representación para una gramática así como el mecanismo para evaluarla
- ventajas
- Facilidad para cambiar o extender la gramática
- Facilidad para implementar la gramática
- Facilidad para introducir nuevas formas de interpretar las expresiones en la gramática
- desventajas
- Limitación en el tipo de gramáticas para los que sirve esta aproximación
- Iterator
- Se utiliza para poder movernos por los elementos de un conjunto de forma secuencial sin necesidad de exponer su implementación específica
- ventajas
- Se incrementa la flexibilidad
- Se enfatiza la distribución de responsabilidades
- Se facilitan el paralelismo y la concurrencia
- desventajas
- Las implementaciones típicas de Iteratortienen un comportamiento no definido si la colección se modifica mientras se está iterando
- Mediator
- Objeto que encapsula cómo otro conjunto de objetos interactúan y se comunican entre sí
- ventajas
- Desacopla a los Colegas
- Simplifica la comunicación entre objetos
- Abstrae como los objetos cooperan
- desventajas
- Centraliza el control,esto hace que el Mediador pueda ser muy complejo, difícil de entender y modificar
- Memento
- Este patrón otorga la capacidad de restaurar un objeto a un estado anterior
- ventajas
- Deja alguna información en un objeto para que sea accesible por otro objeto utilizando control de acceso por defecto
- El Originator es más simple
- El Originator es más simple
- desventajas
- Los mementos son costosos
- El almacenamiento de los Memento es costoso
- Preservación de los límites de la encapsulación
- Observer
- Los objetos son capaces de suscribirse a una serie de eventos que otro objetivo va a emitir, y serán avisados cuando esto ocurra
- ventajas
- todo se logra sin recurrir a un acoplamiento estrecho
- El resultado es código flexible y reusable
- desventajas
- consecuencias en el uso de memoria cuando el observador es demasiado grande
- Si la implementación no es limpia, será muy difícil corregir o encontrar errores
- State
- Permite modificar la forma en que un objeto se comporta en tiempo de ejecución, basándose en su estado interno
- ventajas
- gran flexibilidad para añadir nuevos estados y transiciones
- es la mejor solución cuando hay muchos estados
- los cambios de estado son atómicos
- desventajas
- Existe una extrema complejidad en el código cuando se intenta administrar comportamientos diferentes según una cantidad de estados diferentes
- Strategy
- Permite la selección del algoritmo que ejecuta cierta acción en tiempo de ejecución
- ventajas
- Las familias jerárquicas de estrategias definen algoritmos y comportamientos que enfatizan la reutilización
- Se eliminan las costosas definiciones de comportamiento multicondicionales
- Se posibilita ofrecer diferentes implementaciones del mismo comportamiento
- desventajas
- Los clientes deben tener un cierto conocimiento de cada estrategia
- Dado que todas las estrategias comportan una interfaz común
- Puede producirse una gran explosión en el número de objetos del sistema
- Template Method
- Especifica el esqueleto de un algoritmo, permitiendo a las subclases definir cómo implementan el comportamiento real
- ventajas
- La principal ventaja es que facilita la reutilización de código
- desventajas
- Se puede producir ambigüedad si no se escribe bien
- Si el método plantilla llama demasiados métodos abstractos, se cansará pronto de utilizar AbstractClass como superclase
- Visitor
- Permite separar el algoritmo de la estructura de datos que se utilizará para ejecutarlo. De esta forma se pueden añadir nuevas operaciones a estas estructuras sin necesidad de modificarlas
- ventajas
- Es fácil añadir nuevas operaciones a la Estructura De Objetos
- Se juntan las operaciones relacionadas entre sí
- Se puede ir acumulando el estado a medida que se recorre la estructura
- desventajas
- Añadir un nuevo tipo de elemento a la estructura de objetos crea problemas
- se pone en peligro el encapsulamiento
- Creacionales
Information
- Description
- Mind Map on patrones de diseño, created by Alex Torres on 15/09/2018.
- Created by
- Alex Torres
- Views
- 10
- Rating