Mindmap
PATRONES DE DISEÑO
Inhalt der Mindmap
PATRONES DE DISEÑO
¿Que es un patrón de diseño?
- En programación a veces nos encontramos con ciertos problemas que se repiten a lo largo de nuestra experiencia, como puede ser, el caso típico, hacer una clase que pueda controlar múltiples tipos de conexiones, o una clase que una vez instanciada (creado un objeto) no se puede volver a crear un nuevo objeto.
- Pues bien, los patrones de diseño, son unos diseños básicos de clases e interfaces, aplicables a cualquier lenguaje orientado a objetos (c++, c#, java, php, javascript -si, aunque este último, lo de los objetos es muy especial), para solucionar cierto tipos de problemas.
¿Cuantos patrones de diseño hay?
- Básicamente hay 20 patrones de diseño (aunque como vimos en el podcast, pueden haber variaciones, como es el caso del modelo vista controlador que Microsoft ha hecho una pequeña variación con el MVVM). Algunos de ellos son estos (aconsejo a cualquier persona que este interesada, consultar un libro llamado Gang of Four): Singleton: Se trata de una clase que tan solo se puede instanciar una única vez, las siguientes veces que se instancia, siempre obtendremos el objeto que hemos instanciado la primera vez. Factory: Se trata de una clase, que pasandole el tipo de objeto que queremos instanciar, nos devuelve ese tipo en concreto. Abstract Factory: Parecido a la anterior, pero es capaz de trabajar con clases de diferente diseño, a partir de interfaces. Builder: Este patrón, nos ayuda a instanciar objetos complejos, cuyo constructor o instancia inicial sería muy engorrosa para el programador. Prototype: Crea objetos en clonando una instancia determinada de una clase. Modelo vista controlad
¿Para que sirven?
- Los patrones nos dan soluciones concretas a problemas que encontramos normalmente a desarrollar una solución en cualquier lenguaje de programación. Es simplemente para facilitarnos la vida, pero muchas veces o no son aplicables, o la solución no se adapta al 100% a nuestros requerimientos, en dicho caso, el programador es libre de usar su creatividad (no olvidemos el caso del MVVM) y adaptar el patrón a sus especificaciones personales. Una referencia básica y primordial (cualquier libro, siempre termina haciendo referencia a este), es el Gang of Four de recomendable lectura aunque es bastante técnico. Espero que os haya gustado el articulo, que, aunque siendo un poco escueto, trato de una tema donde se puede rellenar libros y libros.
La importancia de aprender patrones de diseño en desarrollo
- Cuando empezamos a desarrollar software, es común que cada quien utilice su propia lógica, conocimientos y experiencia para crear código. Y esto muchas veces resulta en desarrollos complejos que sólo su creador entiende. Pero, ¿es posible desarrollar un módulo que otro programador pueda aprovechar entender y mejorar? La respuesta está en los patrones de diseño. Estos básicamente son modelos muestra que sirven como guía para que los programadores trabajen sobre ellos. Este es el primero de una serie de artículos en los que te mostraré cómo se usan y cómo pueden ayudarte a crear proyectos colaborativos.
- Esta es una definición que considero correcta ya que cuando conoces un patrón, puedes ver inmediatamente dónde puede serte útil. En resumen y de forma sencilla, un patrón de diseño es una manera de resolver un problema. Un patrón de diseño debe cumplir al menos con los siguientes objetivos
- Cuando empezamos a desarrollar software, es común que cada quien utilice su propia lógica, conocimientos y experiencia para crear código. Y esto muchas veces resulta en desarrollos complejos que sólo su creador entiende. Pero, ¿es posible desarrollar un módulo que otro programador pueda aprovechar entender y mejorar? La respuesta está en los patrones de diseño. Estos básicamente son modelos muestra que sirven como guía para que los programadores trabajen sobre ellos. Este es el primero de una serie de artículos en los que te mostraré cómo se usan y cómo pueden ayudarte a crear proyectos colaborativos.
Tipos de patrones de diseño
- Los patrones de diseño se clasifican en tres tipos diferentes dependiendo del tipo de problema que resuelven. Estos pueden ser creacionales, estructurales y de comportamiento. Creacionales: Su objetivo es resolver los problemas de creación de instancia. Por ejemplo: Singleton (Instancia única): Nos garantiza la existencia de una única instancia para una clase. Prototype (prototipo): Clona las instancias ya existentes. Estructurales: Su nombre es muy descriptivo, se ocupa de resolver problemas sobre la estructura de las clases. Por ejemplo: Bridge (Puente) Separa la abstracción de la implementación. Decorator (Decorador) Agrega funcionalidades a una clase de forma dinámica. Facade (Fachada) Nos provee una interfaz unificada y simple para acceder a un sistema más complejo.
- Existen muchos patrones, lo importante es saber que existen y preocuparnos por entenderlos y usarlos. De esta manera, podrás convertirte en un profesional en el mundo de la programación. En un mundo ideal todo programador debería aprender la sintaxis de la programación y luego los patrones de diseño. Estos te servirán como guía para escribir código de la manera correcta y te ayudarán a resolver problemas de una manera estándar y profesional. Y tú, ¿conoces algunos patrones de diseño? Si es así, déjalos en los comentarios abajo y espera el próximo artículo con mucha más información y ejemplos básicos de su uso.
Patrones de diseño en la programación orientada a objetos
- Clase: Abstracción que recoge las propiedades y comportamiento de los objetos en el sistema. Una clase puede instanciarse en objetos tantas veces como se necesite.
- Objeto: instancia de una clase que se relaciona con el resto de objetos a través de los métodos definidos en sus clases. Herencia: las clases no están aisladas y se relacionan entre ellas, mediante esta propiedad forman una jerarquía en la que las clases heredan las propiedades y métodos de las clases superiores.
- Polimorfismo: es la propiedad de las instancias de las clases, los objetos, por la que pueden responder de forma diferente a un mismo nombre de método en función de su tipo concreto. Abstracción: Permite modelar una entidad del ámbito de trabajo con las características relevantes para el sistema. Encapsulamiento: los elementos relacionados se agrupan juntos en una misma clase para aumentar la cohesión.
- Ocultación: las clases tienen una interfaz a través de la cual el resto de clases interactuan con ella de forma que no necesiten conocer sus detalles y evita que clases externas modifiquen el estado de manera inesperada.
Objetivos de los patrones
- Los patrones de diseño pretenden: Proporcionar catálogos de elementos reusables en el diseño de sistemas de software. Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. Formalizar un vocabulario común entre diseñadores. Estandarizar el modo en que se realiza el diseño. Facilitar el aprendizaje a las nuevas generaciones de diseñadores condensando conocimiento ya existente. Asimismo, no pretenden: Imponer ciertas alternativas de diseño frente a otras. Eliminar la creatividad inherente al proceso de diseño.
Estructuras o plantillas de patrones
- Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés). Clasificación del patrón: creacional, estructural o de comportamiento. Intención: ¿Qué problema pretende resolver el patrón? También conocido como: Otros nombres de uso común para el patrón. Motivación: Escenario de ejemplo para la aplicación del patrón. Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón. Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón. Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón. Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes. Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón. Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón. Código de ejemplo: Código fuente ejemplo de implementación d
Informationen
- Beschreibung
- Mindmap am PATRONES DE DISEÑO, erstellt von emerson camacho am 22/08/2020.
- Erstellt von
- emerson camacho
- Aufrufe
- 0
- Bewertung