GoConqr has a new look! Let us know what you think.

Mind map

patrones de diseño

Alex Torres English

Map content

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

Information

Description
Mind Map on patrones de diseño, created by Alex Torres on 15/09/2018.
Created by
Alex Torres
Views
10
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?