Principios y Patrones de Diseño Basado en el artículo “Principles and Patterns” de Robert C. Martin Arquitectura de software Dominio de patrones de diseño: módulos y su interconexión Copyright © 2000 by Robert C. Martin. All Rights Reserved
INTRODUCCION: El diseño de muchas aplicaciones de software comienza como una imagen o idea en la mente de sus diseñadores. Los patrones de diseño son descripciones de clases y objetos relacionados que están adaptados para resolver un problema de diseño general en un contexto determinado.
SINTOMAS DE LA DEGRADACION RIGIDEZ: Tendencia del software a ser difícil de cambiar. FRAGILIDAD:Un cambio en alguna parte de un software, ocasiona cambios en otros sectores INMOVILIDAD: Inhabilidad de reusar software
SINTOMAS DE LA DEGRADACION VISCOSIDAD: De entorno: Entorno de desarrollo ineficiente. De diseño: Cuando los métodos de preservar el diseño son mas difícil de emplear que los métodos que no preservan el diseño.
PRINCIPIOS DE DISEÑO DE CLASES PRINCIPIO ABIERTO-CERRADO (OCP): Un módulo debe ser abierto para extensión pero cerrado para modificación. PRINCIO DE SUSTITUCION DE LISKOV (LSP): Las subclases deben ser sustitutas de sus clases base
PRINCIPIOS DE DISEÑO DE CLASES PRINCIPIO DE INVERSION DE DEPENDENCIA (DIP): Dependa de abstracciones, no dependa de implementaciones. PRINCIPIO DE SEGREGACION DE INTERFACES (ICP):Los clientes de una clase no deben depender de interfaces que no utilicen.
PRINCIPIOS DE ARQUITECTURA DE PAQUETES PRINCIPIOS DE COHESION DE PAQUETES: Las clases en un mismo paquetes se usan juntas. PRINCIPIOS DE ACOPLAMIENTO DE PAQUETES: Son normas que rigen la interrelación entre paquetes.
PRINCIPIOS DE COHESION DE PAQUETES Principio de equivalencia de liberación y reuso (REP): Agrupar las clases reusable en paquetes que se puedan administrar y controlar. Principio de agrupación común (CCP): Clases que cambian juntas pertenecen a un mismo grupo. Principio de reuso común (CRP): Clases que no son rehusadas juntas no deben ser agrupadas.
PRINCIPIOS DE ACOPLAMIENTO DE PAQUETES Principio de dependencia acíclica (ADP): Las dependencias entre paquetes no debe formar ciclos. Principio de dependencia estable (SDP): La dependencia debe ser en dirección de la estabilidad. Principio de abstracción estable (SAP): Los paquetes estables deben ser paquetes abstractos.
PATRONES DE ARQUITECTURA ORIENTADA A OBJETOS La definición esencial de un patrón de diseño es una buena solución, conocida y desgastada, a un problema común.
PATRONES DE ARQUITECTURA ORIENTADA A OBJETOS Abstract Server: Cuando un cliente depende directamente del servidor violamos el Principio de Dependencia Inversa, este problema lo resolvemos introduciendo una interface. Adapter: Se utiliza para transformar una interfaz en otra, de tal modo que una clase que no pudiera utilizar la primera, haga uso de ella a través de la segunda Observer: Se usa cuando no queremos que el detector sepa del actor.
PATRONES DE ARQUITECTURA ORIENTADA A OBJETOS Bridge: Se usa para desacoplar una abstracción de su implementación. Abstract Factory: Permite trabajar con objetos de distintas familias de manera que las familias no se mezclen entre sí y haciendo transparente el tipo de familia concreta que se esté usando.
CONCLUSION Los patrones de diseño describen soluciones simples y elegantes a problemas específicos de diseño de software orientado a objetos. Los mismos representan soluciones que han sido desarrolladas y han ido evolucionando a lo largo del tiempo.
BIBLIOGRAFIA Principles and Patterns2009-Articulo de Robert C Martin Programación en java: Fundamentos de programación y principios de diseño http://elvex.ugr.es/decsai/java/ “Patrones de diseño”. Gamma, E.; Helm, R.; Johnson, R.; Vlissides