¡GoConqr estrena diseño! Cuéntanos qué te parece.

Mapa mental

patrones de diseño

Alex Torres Inglés

Mapa mental sobre patrones de diseño: solución reutilizable, ventajas y clasificación

Mapa mental: patrones de diseño

Contenido del mapa

patrones de diseño

  1. Es una forma reutilizable de resolver un problema común

  2. 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
  3. 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

Información

Descripción
Mapa Mental sobre patrones de diseño, creado por Alex Torres el 15/09/2018.
Creado por
Alex Torres
Visitas
10
Valoración

Escríbenos

¿Sobre qué es tu mensaje?

¿Qué te parece el nuevo diseño?

¿Te gusta?