arquitectura aplicaciones patrones de diseño
DESCRIPTION
Patrones de diseño SWTRANSCRIPT
Germania Rodríguez [email protected]
Arquitectura de Aplicaciones
Patrones de Diseño
• Introducción – La construcción de software – tarea
complicada – Depende de la experiencia de las personas
- desarrolladores – El 80% de los aportes viene del 20% del
personal – El 80% del esfuerzo está en el 20% del
código desarrollado
Objetivo REUTILIZACIÓN
Patrones de Diseño
• Mecanismos de reutilización – Componentes – Frameworks – Objetos distribuidos – PATRONES DE DISEÑO
Patrones de Diseño
“Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada más de un millón de veces sin hacerlo siquiera dos veces de la misma forma” - Christopher Alexander
Patrones de Diseño
• Objetivo: crear un lenguaje común a una comunidad de desarrolladores para comunicar experiencia sobre los problemas y sus soluciones
Patrones de Diseño
• Características – Solucionar un problema – Ser un concepto probado – La solución no es obvia – Describe participantes y sus relaciones
Patrones de Diseño
• Elementos 1. El nombre del patrón 2. El problema 3. La solución 4. Las consecuencias - resultados
Patrones de Diseño
• Clasificación
Ámbito Propósito
Patrones de Creación
Patrones estructurales
Patrones de Comportamiento
Clase • Factory Method • Adapter (de clases)
• Interpreter • Template Method
Objeto • Abstract Factory • Builder • Prototype • Singleton
• Adapter (de objetos)
• Bridge • Composite • Decorator • Facade • Flyweight • Proxy
• Chain of Responsibility • Command • Iterator • Mediator • Memento • Observer • State • Strategy • Visitor
Patrones de Diseño
Su propósito principal es abstraer el proceso de creación de instancias. Ayudan a hacer un sistema independiente de cómo se crean, se componen y se representan sus objetos - Un patrón de clases usa la herencia para cambiar la clase de la instancia a crear, mientras que un patrón de objetos delega la creación de la instancia en otro objeto. Éstos a su vez se clasifican en:
Fabrica Abstracta (Abstract Factory) Proporciona una interfaz para crear familias de objetos o que dependen entre sí, sin especificar sus clases concretas.
Constructor (Builder) Separa la construcción de un objeto de su representación.
Método de Fábrica (Factory Method) Define una interfaz para crear un objeto.
Prototipo (Prototype) Especifica los tipos de objetos a crear por medio de una instancia prototípica y crea nuevos objetos copiando dicho prototipo.
Instancia única (Singleton) Garantiza que una clase solo tenga una instancia
Patrones de Diseño PATRONES DE CREACIÓN
Se ocupan de cómo se combinan las clases y los objetos para formar estructuras más grandes - Los patrones estructurales de clases hacen uso de la herencia para componer interfaces o implementaciones. En éste tipo de patrones se encuentran:
Adaptador (Adapter) Convierte la interfaz de una clase en otra interfaz que es la que esperan los clientes.
Puente (Bridge) Desacopla una abstracción de su implementación
Compuesto (Composite) Compone objetos en estructuras de árbol para representar jerarquías de parte-todo.
Decorador (Decorator) Asigna responsabilidades adicionales a un objeto dinámicamente
Fachada (Facade) Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema.
Peso ligero (Flyweight) Una instancia de grano fino usada para compartir eficientemente
Apoderado (Proxy) Un objeto representando otro objeto
Patrones de Diseño PATRONES ESTRUCTURALES
Tienen que ver con algoritmos y con la asignación de responsabilidades a objetos. Describen no solo patrones de clases y objetos, sino también patrones de comunicación entre ellos.
Cadena de responsabilidad (Chain of responsibility) Encadena los objetos receptores y pasa la petición a través de la cadena hasta que es procesada por algún objeto.
Orden (Command) Encapsula una petición orden como un objeto.
Interprete (Interpreter) Define una forma para incluir elementos de lenguaje en un programa
Iterador (Iterator) Proporciona un modo secuencial para acceder a los elementos de una colección
Mediador (Mediator) Define comunicación simplificada entre clases
Recuerdo (Memento) Captura y restaura el estado interno de un objeto.
Patrones de Diseño PATRONES DE COMPORTAMIENTO
Observador (Observer) Define una dependencia de uno a muchos entre objetos
Estado (State) Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno.
Estrategia (Strategy) Define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables.
Método Plantilla (Template method) Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos.
Visitante (Visitor) Representa una operación sobre los elementos de una estructura de objetos.
Patrones de Diseño PATRONES DE COMPORTAMIENTO
• ¿Cómo seleccionar un patrón de diseño? • Tipo de problema a resolver • Que tipos de problemas solucionan un patrón determinado • Observar las interrelaciones de los patrones • Visión sistémica (todo) • Piense que debería ser variable en su diseño.
Patrones de Diseño
• ¿Cómo usar un patrón de diseño? • Familiarizarse con el Patrón: estructura, participantes y
colaboraciones. • Examine algunos ejemplos de su codificación • Elija nombres significativos en el contexto de la aplicación • Defina las clases • Defina nombres especificos de la aplicación para las
operaciones del patrón • Implemente las operaciones para llevar a cabo las
responsabilidades y colaboraciones del patrón.
Patrones de Diseño
• Patrones y Frameworks – Los patrones de d iseño son más
abstractos que los frameworks – Los patrones de diseño son elementos
arquitectónicos más pequeños que los frameworks
– Los patrones están menos especializados que los framework
Patrones de Diseño
Bibliografía • Gamma E., Helm R., Johnson R., Vlissides J., Patrones de
diseño: Elementos de software orientado a objetos reutilizable, Pearson Education S.A., Madrid 2003.
• Calderon J. , Sistemas IV , h t tp : / /www.s l ideshare.net /videoconferencias/sistemas-iv, UTPL 2007