GoConqr hat ein neues Design! Sag uns, wie es dir gefällt.

Mindmap

Patrones de diseño

Jorge Martin Ixta Martinez Englisch

Patrones de diseño

Inhalt der Mindmap

Patrones de diseño

  1. Creacionales

    • Factory
      • Principio
        • Dependa de abstracciones. No dependa de clases concretas.
      • Abstracto
        • Proporciona una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas
        • Características
          • Crea familias de objetos relacionados sin tener que depender de sus clases concretas.
          • Permite que una clase difiera la instanciación a sus subclases.
          • Se basa en la composición de objetos.
            • La creación de objetos se implementa en métodos expuestos en la interfaz de fábrica.
      • Simple
        • Define una interfaz para crear un objeto, pero permite que las subclases decidan qué clase instanciar.
        • Este patrón permite que una clase difiera la instanciación a subclases.
        • Características
          • Es una forma sencilla de desvincular a sus clientes de las clases concretas.
      • Características generales
        • Encapsula la creación de objetos.
        • Promueve un acoplamiento flexible al reducir la dependencia de su aplicación en las clases de concreto.
        • Se basa en la herencia
    • Singleton
      • Garantiza que una clase tenga solo una instancia y proporciona un punto global de acceso a ella.
      • Características
        • Asegura que tenga como máximo una instancia de una clase en su aplicación.
        • Proporciona un punto de acceso global a esa instancia.
        • Su implementación hace uso de un constructor privado.
          • Un método estático combinado con una variable estática.
        • Si se usan varios cargadores de clases, se podría frustrar la implementación de Singleton y resultar en múltiples instancias.
    • 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.
      • Se aplica cuando
        • Nuestro sistema trata con objetos complejos (compuestos por muchos atributos) pero el número de configuraciones es limitada.
        • El algoritmo de creación del objeto complejo puede independizarse de las partes que lo componen y del ensamblado de las mismas.
      • Características
        • Encapsula la forma en que se construye un objeto complejo.
        • Permite que los objetos se construyan en un proceso variable y de varios pasos.
        • Oculta la representación interna del producto al cliente.
    • Protorype
      • Permite la creación de objetos basados en "plantillas". Un nuevo objeto se crea a partir de la clonación de otro objeto.
      • Características
        • Oculta las complejidades de hacer nuevas instancias del cliente.
        • Proporciona la opción para que el cliente genere objetos cuyo tipo se desconoce.
        • En algunas circunstancias, copiar un objeto puede ser más eficaz que crear uno nuevo.
      • Se usa cuando
        • La creación de nuevos objetos acarrea un coste computacional elevado.
        • Los objetos a crear tienen o suelen tener atributos que repiten su valor.
  2. Estructurales

    • Decorator
      • Adjunte responsabilidades adicionales a un objeto de forma dinámica.
      • Los decoradores brindan una alternativa flexible a la subclasificación para extender.
      • Principio
        • Las clases deben estar abiertas para extensión pero cerradas para modificaciones.
      • Características:
        • La herencia es una forma de extensión, pero no necesariamente la mejor manera de lograr flexibilidad en los diseños.
        • En los diseños debemos permitir que se amplíe el comportamiento sin necesidad de modificar el código existente.
        • La composición y la delegación a menudo se pueden usar para agregar nuevos comportamientos en tiempo de ejecución.
        • Proporciona una alternativa a la subclasificación para extender el comportamiento.
        • Implica un conjunto de clases de decorador que se utilizan para envolver componentes concretos.
        • Las clases de decoradores reflejan el tipo de componentes que decoran.
        • Los decoradores cambian el comportamiento de sus componentes agregando nueva funcionalidad antes y / o después (o incluso en lugar de) las llamadas al método al componente.
        • Puede envolver un componente con cualquier número de decoradores.
        • Los decoradores pueden resultar en muchos objetos pequeños en nuestro diseño, y el uso excesivo puede ser complejo.
    • Adapter
      • Convierte la interfaz de una clase en otra interfaz que esperan los clientes
      • Permite que las clases trabajen juntas que de otra manera no podrían debido a interfaces incompatibles
      • Características
        • Permite adaptar clases en dominios totalmente diferentes.
        • Un único adaptador puede adaptar la funcionalidad de múltiples clases.
        • Dependiendo de la implementación, el adaptador puede contener múltiples punteros que incrementen la complejidad del sistema.
      • Se usa cuando
        • Pretendemos usar una clase existente cuya interfaz no es compatible con la requerida.
    • Facade
      • Proporciona una interfaz unificada a un conjunto de interfaces en un subsistema.
      • Define una interfaz de nivel superior que facilita el uso del subsistema.
      • Características
        • Simplifica el uso de sistemas complejos con tareas redundantes.
        • Reduce el acoplamiento entre el subsistema y los clientes.
      • Se aplica cuando
        • Nuestro sistema cliente tiene que acceder a parte de la funcionalidad de un sistema complejo.
        • Hay tareas o configuraciones muy frecuentes y es conveniente simplificar el código de uso.
    • Bridge
      • Desacopla una abstracción de su implementación, para que las dos puedan evolucionar de forma independiente.
      • Se usa cuando
        • Queremos evitar enlaces permanentes entre una abstracción y una implementación.
        • Queremos que los cambios en la implementación de una abstracción no afecten al cliente.
        • Necesitamos que la implementación de una característica sea compartida entre múltiples objetos.
      • Características
        • Una implementación no se limita permanentemente a una interface.
        • La implementación de una abstracción puede ser configurada y/o cambiada en tiempo de ejecución.
        • Cambiar una implementación no requiere recompilar la clase Abstraction ni sus clientes.
    • Composite
      • Facilita la creación de estructuras de objetos en árbol, donde todos los elementos emplean una misma interfaz.
      • Se aplica cuando
        • El usuario ignora la diferencia entre composiciones de objetos y objetos individuales.
        • Se detecta que se están utilizando varios objetos de la misma manera, y con frecuencia tienen código casi idéntico para manejarlos.
      • Características
        • Estructura nuestro programa de tal manera que clarifica las jerarquías de clases implicadas.
        • Hace el cliente simple.
        • Permite tratar la estructura y los objetos individuales
    • FlyWeight
      • Se usa cuando
        • Una instancia de una clase pueda utilizarse para proporcionar muchas "instancias virtuales".
      • Características
        • Reduce el número de instancias de objetos en tiempo de ejecución, ahorrando memoria.
        • Centraliza el estado de muchos objetos "virtuales" en una única ubicación.
    • Proxy
      • Es una clase que funciona como interfaz hacia cualquier otra cosa.
      • Se usa cuando
        • Se necesita una referencia a un objeto más flexible o sofisticada que un puntero.
      • Proxy remoto
        • Representa un objeto en otro espacio de direcciones.
      • Proxy virtual
        • Retrasa la creación de objetos costosos.
      • Proxy de protección
        • Controla el acceso a un objeto.
  3. De comportamiento

    • Observer
      • Define una dependencia de uno a muchos entre los objetos de modo que cuando un objeto cambia de estado, todos sus dependientes son notificados y actualizados automáticamente.
      • Principio de diseño
        • Esfuércese por lograr diseños poco ajustados entre objetos que interactúan.
      • Características:
        • Lo único que el sujeto sabe sobre un observador es que implementa una determinada interfaz (la interfaz Observer). No necesita conocer la clase concreta del observador, lo que hace o cualquier otra cosa al respecto.
        • Podemos agregar nuevos observadores en cualquier momento.
        • Podemos reemplazar cualquier observador en tiempo de ejecución con otro observador
        • Podemos eliminar observadores en cualquier momento.
        • Podemos reutilizar sujetos u observadores independientemente unos de otros. Si nosotros
        • Los cambios en el sujeto o en un observador no afectarán al otro.
    • Command
      • Son objetos que encapsulan una acción y los parámetros que necesitan para ejecutarse.
      • Se aplica cuando
        • Precisamos de colas, pilas u otras estructuras para gestionar las invocaciones.
        • Exista la posibilidad de cancelar operaciones.
        • Se necesite parametrizar de manera uniforme las invocaciones.
      • Características
        • Desacoplamiento de la aplicación que invoca las órdenes y la implementación de las mismos.
        • Como las órdenes son objetos, podemos aplicar la herencia a las mismas o realizar composiciones de órdenes.
        • Permite modificar las órdenes a ejecutar en tiempo de ejecución.
    • 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.
      • Se aplica cuando
        • Varios objetos pueden manejar cierta petición, y el manejador no se conoce a priori, sino que debería determinarse automáticamente.
      • Características
        • Elimina o reduce el acoplamiento existente entre el emisor y el receptor del mensaje.
        • Flexibilidad a la hora de establecer las responsabilidades, permitiendo modificarlas en tiempo de ejecución.
    • Interpreter
      • Define una representación para una gramática así como el mecanismo para evaluarla.
      • Se usa cuando
        • Debemos trabajar con sentencias de un lenguaje que nuestro lenguaje de programación no reconoce automáticamente.
        • La gramática del lenguaje con el que debemos trabajar es sencilla.
      • Características
        • Fácil modificación y ampliación de los elementos gramaticales
        • Su implementación es sencilla
        • La implementación de los métodos para cada elemento del lenguaje es dinámica
    • Iterator
      • Se utiliza para poder movernos por los elementos de un conjunto de forma secuencial sin necesidad de exponer su implementación específica.
      • Se usa cuando
        • Debemos aplicar este patrón cuando tengamos que trabajar con objetos que internamente trabajan sobre un grupo de elementos y debamos poder manejar dichos elementos sin que un cambio en la implementación de la lista o conjunto afecte al sistema global.
      • Características
        • Estandariza el tratado de elementos de listas con implementaciones independientes.
        • Permite variar el tratamiento de las listas modificando tan solo la clase que implementa el iterador.
        • Se pueden realizar múltiples recorridos simultáneos.
    • Mediator
      • Objeto que encapsula cómo otro conjunto de objetos interactúan y se comunican entre sí.
      • Se usa cuando
        • La reutilización de un objeto es difícil ya que es dependiente de muchos otros.
      • Características
        • Desacopla a los integrantes del sistema de sus interacciones.
        • Simplifica la comunicación entre objetos
    • Memento
      • Este patrón otorga la capacidad de restaurar un objeto a un estado anterior
      • Características
        • Mantiene encapsulados los datos del objeto clave.
        • Proporciona una capacidad de recuperación fácil de implementar
        • Se utiliza para guardar el estado.
        • Un inconveniente de usar Memento es que guardar y restaurar el estado puede llevar mucho tiempo.
    • State
      • Permite modificar la forma en que un objeto se comporta en tiempo de ejecución, basándose en su estado interno.
      • Características
        • Representa el estado como una clase en toda regla.
        • El Contexto obtiene su comportamiento delegando al objeto de estado actual con el que está compuesto.
        • Al encapsular cada estado en una clase, localizamos cualquier cambio que sea necesario realizar.
        • Las transiciones de estado pueden ser controladas por las clases de estado o por las clases de contexto.
        • El uso del patrón de estado generalmente dará como resultado un mayor número de clases en su diseño.
    • Strategy
      • Permite la selección del algoritmo que ejecuta cierta acción en tiempo de ejecución.
      • Características
        • Configura una clase con un determinado comportamiento entre muchos posibles.
        • Evitar exponer estructuras de datos complejas y dependientes del algoritmo
        • ofrece una alternativa a las sentencias condicionales para seleccionar el comportamiento deseado.
        • Las jerarquías de clases Estrategia definen una familia de algoritmos o comportamientos
    • Template Method
      • Especifica el esqueleto de un algoritmo, permitiendo a las subclases definir cómo implementan el comportamiento real.
      • Características
        • Brinda una técnica importante para la reutilización del código.
        • Su clase abstracta puede definir métodos concretos, métodos abstractos y ganchos.
        • Los métodos abstractos se implementan por subclases.
        • Los Hooks son métodos que no hacen nada o tienen un comportamiento predeterminado en la clase abstracta, pero pueden ser anulados en la subclase.
    • Visitor
      • Permite separar el algoritmo de la estructura de datos que se utilizará para ejecutarlo.
      • Características
        • Le permite agregar operaciones a una estructura compuesta sin cambiar la estructura en sí.
        • Agregar nuevas operaciones es relativamente fácil.
        • El código para las operaciones realizadas por el Visitante está centralizado

Bilder und Dateien der Mindmap

  • Patrones de diseño

Informationen

Beschreibung
Mindmap am Patrones de diseño, erstellt von Jorge Martin Ixta Martinez am 04/10/2020.
Erstellt von
Jorge Martin Ixta Martinez · Okt 2020
Aktualisiert
9 Okt 2020
Aufrufe
1
Bewertung

Feedback

Worum geht es?

Wie gefällt dir das neue Design?

Dein Eindruck