Patrones de Diseo Metodologas de Desarrollo Software Javier
- Slides: 118
Patrones de Diseño Metodologías de Desarrollo Software Javier Sánchez Pérez
Contenido Introducción p Patrones de Creación p Patrones Estructurales p Patrones de Comportamiento p
Introducción Patrón de diseño: Descripciones de clases y objetos relacionados que están particularizados para resolver un problema de diseño general p Experiencia en el diseño p Hacen un uso eficiente de la tecnología OO p Estructuran la arquitectura del producto p Promueven la reutilización del diseño p
Introducción Herencia de clase vs. Herencia de interfaces p Programar para interfaces, no para implementación p Herencia frente a composición p Herencia frente a tipos parametrizados p
Creación Estructurales Comportamiento Clase Factory Method Objeto Abstract Factory Builder Prototype Singleton Adapter Interpreter Template Method Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor
Patrones de Creación Abstract Factory Builder Factory Method Prototype Singleton
Abstract Factory p Objetivo: n p Nombres: n p Interfaz para crear familias de objetos relacionados sin especificar clases concretas Kit, Fábrica Abstracta Ejemplo: n Toolkit de interfaces de usuario en Windows, Linux, Mac
Abstract Factory - Ejemplo
Abstract Factory - Estructura
Abstract Factory - Aplicabilidad Sistema independiente de cómo se crean, componen y representan sus productos p Sistema configurado con familias de productos p La familia de productos se diseña para ser utilizado conjuntamente p Conjunto de productos de los que sólo se conoce su interfaz y no su implementación p
Abstract Factory - Consecuencias Aísla las clases concretas p Facilita intercambio de familias de productos p Promueve la consistencia entre productos p Es difícil dar cabida a nuevos tipos de productos p
Builder p Objetivo: n p Nombres: n p Separa la construcción de un objeto complejo de su representación de forma que se puedan crear diferentes representaciones Constructor Ejemplo: n Convertir un fichero RTF a distintos tipos de formatos de texto
Builder - Ejemplo
Builder - Estructura
Builder - Aplicabilidad El algoritmo para crear un objeto complejo debiera ser independiente de las partes de que se compone dicho objeto y de cómo se ensamblan p El proceso de construcción debe permitir diferentes representaciones del objeto que está siendo construido p
Builder - Consecuencias Permite variar la representación interna de un producto p Aísla el código de construcción y representación p Proporciona un control más fino sobre el proceso de construcción p
Factory Method p Objetivo: n p Nombres: n p Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar Virtual Constructor, Método de Fabricación Ejemplo: n Frameworks de aplicaciones
Factory Method - Ejemplo
Factory Method - Estructura
Factory Method - Aplicabilidad Una clase no puede prever la clase de objetos que debe crear p Una clase quiere que sean sus subclases quienes especifiquen los objetos que ésta crea p Las clases delegan la responsabilidad en una de entre varias clases auxiliares p
Factory Method - Consecuencias Proporciona enganches para las subclases p Conecta jerarquías de clases paralelas p
Prototype p Objetivo: n p Nombres: n p Crear nuevos objetos copiando una instancia prototípica Prototipo Ejemplo: n Editor de partituras musicales
Prototype - Ejemplo
Prototype - Estructura
Prototype - Aplicabilidad Cuando las clases a instanciar sean especificadas en tiempo de ejecución p Para evitar jerarquías de clases de fábricas con jerarquía de clases de productos p Cuando las instancias de clases puedan tener un estado de entre un conjunto reducido p
Prototype - Consecuencias Añadir y eliminar productos en tiempo de ejecución p Especificar nuevos objetos modificando valores p Especificar nuevos objetos variando la estructura p Reduce la herencia p Configurar dinámicamente una aplicación con clases p
Singleton p Objetivo: n p Nombres: n p Garantiza que una clase sólo tenga una instancia, y proporciona un punto de acceso global a ella Único Ejemplo: n Una única cola de impresión para múltiples impresoras
Singleton - Estructura
Singleton - Aplicabilidad p Cuando deba haber una única instancia de una clase
Singleton - Consecuencias Acceso controlado a la única instancia p Espacio de nombre reducido p Permite un número variable de instancias p Más flexible que las operaciones de clase p
Patrones Estructurales Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
Adapter p Objetivo: n p Nombres: n p Convierte la interfaz de una clase en otra que es la que esperan los clientes Wrapper, Adaptador Ejemplo: n La pila a partir del vector
Adapter - Ejemplo
Adapter - Estructura Adaptador de clase Adaptador de objeto
Adapter - Aplicabilidad Se quiere usar una clase existente y su interfaz no concuerda con la que se necesita p Se quiere crear una clase reutilizable que coopere con clases no relacionadas p
Adapter - Consecuencias Un adaptador de clases no nos servirá cuando queramos adaptar una clase y sus subclases p Un adaptador de clases permite redefinir parte del comportamiento de Adaptable p Un adaptador de objetos permite que un mismo Adaptador funcione con muchos Adaptables p
Bridge p Objetivo: n p Nombres: n p Desacoplar una abstracción de su implementación para que ambas varíen de forma independiente Handle/Body, Puente Ejemplo: n Herencia de ventanas en diferentes plataformas
Bridge - Ejemplo Bridge
Bridge - Estructura
Bridge - Aplicabilidad Evitar un enlace permanente entre una abstracción y su implementación p Los cambios en la implementación no deberían tener impacto en los clientes p Se quiere ocultar completamente a los clientes la implementación p Proliferación de clases p Se quiere compartir una implementación entre varios objetos p
Bridge - Consecuencias Desacopla la interfaz y la implementación p Mejora la extensibilidad p Oculta detalles de implementación a los clientes p
Composite p Objetivo: n p Nombres: n p Compone objetos en estructuras de árbol parte -todo. Trata de forma uniforme elementos individuales y compuestos Compuesto Ejemplo: n Manejo de gráficos simples y compuestos
Composite - Ejemplo
Composite - Estructura
Composite - Aplicabilidad Se quiere representar jerarquías de objetos parte-todo p Se quiere que los clientes obvien diferencias entre objetos compuestos e individuales p
Composite - Consecuencias Objetos primitivos y compuestos se tratan de igual forma p Simplifica el cliente p Facilita añadir nuevos tipos de componentes p Puede hacer que un diseño sea demasiado general p
Decorator p Objetivo: n p Nombres: n p Asigna responsabilidades adicionales a un objeto dinámicamente. Alternativa flexible a la herencia para extender la funcionalidad Wrapper, Decorador Ejemplo: n Caja de texto con decoradores
Decorator - Ejemplo
Decorator - Estructura
Decorator - Aplicabilidad Añadir objetos individuales de forma dinámica y transparente p Retirar responsabilidades a los objetos p Cuando la extensión por herencia no es viable p
Decorator - Consecuencias Más flexibilidad que la herencia estática p Evita clases cargadas de funciones en la parte superior de la jerarquía p Un decorador y su componente no son idénticos p Muchos objetos pequeños p
Facade p Objetivo: n p Nombres: n p Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema Fachada Ejemplo: n Compilador
Facade - Ejemplo
Facade - Estructura
Facade - Aplicabilidad Proporcionar una interfaz simple para un subsistema complejo p Hay muchas dependencias entre los clientes y las clases del subsistema p Queremos dividir en capa nuestros subsistemas p
Facade - Consecuencias Oculta a los clientes los componentes del subsistema haciendo que sea más fácil de utilizar p Promueve un débil acoplamiento entre el subsistema y los clientes p No impide que las aplicaciones usen las clases del subsistema p
Flyweight p Objetivo: n p Nombres: n p Hacer más eficiente los sistemas con un gran número de objetos de grano fino Peso Ligero Ejemplo: n Procesador de texto
Flyweight - Ejemplo
Flyweight - Estructura
Flyweight - Aplicabilidad Una aplicación utiliza un gran número de objetos p Los costes de almacenamiento son elevados p La mayor parte del estado del objeto se puede hacer extrínseco p Muchos objetos se pueden representar pocos p La aplicación no depende de la identidad de los objetos p
Flyweight - Consecuencias Disminuyen requisitos de almacenamiento p Aumenta tiempo de ejecución con la transferencia, búsqueda y cálculo del estado extrínseco p
Proxy p Objetivo: n p Nombres: n p Proporciona un representante o sustituto de otro objeto para controlar el acceso a éste Surrogate, Apoderado Ejemplo: n Visualización de imágenes en documentos
Proxy - Ejemplo
Proxy - Estructura
Proxy - Aplicabilidad Proxy remoto: proporciona un representante local de un objeto remoto p Proxy virtual: crea objetos costosos por encargo p Proxy de protección: controla el acceso seguro al objeto original p Referencia inteligente: sustituto de un simple puntero p
Proxy - Consecuencias Control previo a un objeto p Se pueden realizar operaciones sobre el objeto de forma más eficiente/inteligente p Introduce un nivel de indirección al acceder a un objeto p
Patrones de Comportamiento Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor
Chain of Responsibility p Objetivo: n p Nombres: n p Evita acoplar el emisor de una petición a un receptor permitiendo responder a varios objetos Cadena de responsabilidad Ejemplo: n Ayuda contextual en una aplicación
Chain of Responsibility - Ejemplo
Chain of Responsibility - Estructura
Chain of Responsibility - Aplicabilidad Hay más de un objeto que puede manejar la petición p No se conoce a priori el manejar sino que debería determinarse automáticamente p Se quiere enviar la petición a un grupo de objetos sin especificar el receptor p El conjunto de objetos que pueden tratar la petición debería ser especificado dinámicamente p
Chain of Responsibility Consecuencias Reduce el acoplamiento p Añade flexibilidad para asignar responsabilidades a objetos p No se garantiza la recepción p
Command p Objetivo: n p Nombres: n p Encapsular una petición en un objeto para tener un control más fino sobre la petición Action, Transaction, Orden Ejemplo: n Menús de las aplicaciones
Command - Ejemplo
Command - Estructura
Command - Diagrama secuencia
Command - Aplicabilidad Parametrizar objetos con una acción a realizar p Especificar, poner en cola y ejecutar peticiones en diferentes instantes de tiempo p Permitir deshacer p Permitir registrar los cambios p Estructurar un sistema alrededor de operaciones de alto nivel p
Command - Consecuencias Desacopla el objeto que invoca la operación de aquél que sabe cómo realizarla p Las órdenes son objetos de primera clase p Se pueden ensamblar órdenes en una orden compuesta (Orden Macro) p Es fácil añadir nuevas órdenes p
Interpreter p Objetivo: n p Nombres: n p Define la representación de la gramática de un lenguaje junto con un intérprete Intérprete Ejemplo: n n n Expresion : : = literal | alternativa | secuencia | repetición | ‘(‘ expresion ‘)’ Alternativa : : = expresion ‘|’ expresion Secuencia : : = expresion ‘&’ expresion Repetición : : = expresion ‘*’ Literal : : = ‘a’ | ‘b’ | ‘c’ |… { ‘a’ | ‘b’ | ‘c’ |…}*
Interpreter - Ejemplo
Interpreter - Estructura
Interpreter - Aplicabilidad Cuando hay un lenguaje que interpretar p La gramática es simple p La eficiencia no es una preocupación crítica p
Interpreter - Consecuencias Es fácil cambiar y ampliar la gramática p Resulta fácil implementarla p Las gramáticas complejas son difíciles de mantener p Añadir nuevos modos de interpretar expresiones p
Iterator p Objetivo: n p Nombres: n p Acceder a los elementos de un agregado sin exponer su representación interna Cursor, Iterador Ejemplo: n n Listas e iteradores sobre listas STL
Iterator - Ejemplo
Iterator - Estructura
Iterator - Aplicabilidad Acceder a un objeto agregado sin exponer su representación interna p Permitir varios recorridos sobre los agregados p Proporcionar una interfaz uniforme para recorrer diferentes estructuras agregadas p
Iterator - Consecuencias Permite variaciones en el recorrido de un agregado p Los iteradores simplifican la interfaz del agregado p Se puede hacer más de un recorrido a la vez sobre el mismo agregado p
Mediator p Objetivo: n p Nombres: n p Define un objeto que encapsula cómo interactúan una serie de objetos Mediados Ejemplo: n Elementos de interfaces de usuario sincronizados
Mediator - Ejemplo
Mediator - Ejemplo
Mediator - Estructura
Mediator - Aplicabilidad Un conjunto de objetos se comunican de forma bien definida, pero compleja p Difícil reutilizar un objeto ya que éste se refiere a muchos otros p Comportamiento distribuido entre varias clases debería poder ser adaptado p
Mediator - Consecuencias Reduce la herencia p Desacopla a los “Colegas” p Simplifica los protocolos de los objetos p Abstrae cómo cooperan los objetos p Centraliza el control p
Memento p Objetivo: n p Nombres: n p Representa y externaliza el estado interno de un objeto sin violar la encapsulamiento Token, Recuerdo Ejemplo: n Deshacer
Memento - Estructura
Memento - Estructura
Memento - Aplicabilidad p Hay que guardar la instantánea de un objeto y volverlo a recuperar más tarde
Memento - Consecuencias Preservación de los límites de la encapsulamiento p Simplifica al Creador p El uso de mementos puede ser costoso p Definición de interfaces reducidas y amplias p Costes ocultos en el cuidado de los mementos p
Observer p Objetivo: n p Nombres: n p Define una dependencia de uno a muchos, de forma que cuando se modifique, se actualicen automáticamente los otros Dependents, Publish-Subscribe, Observador Ejemplo: n Varias vistas de unos mismos datos
Observer - Ejemplo a b c x 60 30 10 y 50 30 20 z 80 10 10 a b c a= 50% b=30 % c=20%
Observer - Estructura
Observer - Estructura
Observer - Estructura
Observer - Aplicabilidad Un cambio en un objeto requiere cambiar otros p Un objeto debería notificar algún cambio a otros objetos sin hacer suposiciones sobre quiénes son estos p
Observer - Consecuencias Bajo acoplamiento entre sujeto y observador p Capacidad de comunicación mediante difusión p Actualizaciones inesperadas p
State p Objetivo: n p Nombres: n p Permite que un objeto modifique su comportamiento cuando varíe su estado interno Estado Ejemplo: n Conexiones TCP/IP
State - Ejemplo
State - Estructura
State - Aplicabilidad El comportamiento de un objeto depende de su estado y debe cambiar en tiempo de ejecución p Operaciones con muchas sentencias condicionales que dependen del estado p
State - Consecuencias Localiza el comportamiento dependiente del estado p Hace explícitas las transiciones entre estados p Los objetos Estado pueden compartirse p
Visitor p Objetivo: n p Nombres: n p Representa una operación sobre los elementos de una estructura de objetos Visitante Ejemplo: n Compilador
Visitor - Ejemplo
Visitor - Estructura
Visitor - Estructura
Visitor - Aplicabilidad Muchas operaciones distintas sobre una misma estructura de objetos. Evitar contaminar la estructura p Las clases de la estructura de objetos rara vez cambian y se quieren definir nuevas operaciones p
Visitor - Consecuencias Se facilita añadir nuevas operaciones p Se agrupan operaciones relacionadas p Es difícil añadir nuevas clases de Elemento. Concreto p Visitar varias jerarquías de clases p Acumular el estado p Romper el encapsulamiento p
Referencias p Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, “Patrones de Diseño: Elementos de software orientado a objetos reutilizable”, Addison-Wesley 2003
- Aprendizaje situado
- Características de la heurística
- Costos mixtos
- Portafolio de diseo
- Diseo grafico
- Diseo web
- Diseo de interiores
- Patrones de arquitectura de software
- Texto expositivo causa-efecto ejemplo
- Teoria biosocial de linehan
- Una recta numérica
- Grasp patrones
- Patrones alcistas
- Patrones de la ciencia
- Patron citolitico
- Patrones ab
- Hiperventilacion neurogena central
- Espirometria patrones obstructivos y restrictivos
- Funcion de un topografo
- Verificacion de patrones oculares
- Prohibiciones a los patrones
- Patrones grasp
- Patron command java
- Graduación de patrones
- Patrones de flujo de materiales
- Patrones grasp
- Patrones comerciales
- Patron paralelo del surco
- Son los patrones biográficos del comportamiento individual
- Patrones triangulos
- Patrones de consumo marketing
- Como hacer un grid gerencial
- Patrones de familia en cuidados paliativos
- Patrones de dispersión
- Derechos y obligaciones
- Chorros de agua bomberos
- Signo de la silueta rx
- Patron 2 nutricional metabolico
- Patrones ventilatorios
- Dibujos de habilidades motrices
- Patrones grasp
- Metodologias del desarrollo de software
- +proyecto +software +desarrollo
- Que es el proceso unificado
- Modelo en flor desarrollo de software
- Modelo en espiral ventajas y desventajas
- Que es un case
- Fases de desarrollo de software
- Proceso unificado de desarrollo de software
- Asd software
- Javier arvalo
- Javier navaridas
- Javier remiro
- Dr. javier collado
- Javier arvalo
- Dr. javier e. calvo
- Javier salek
- Encontrar el dominio y rango de la funcion y=x2
- Dr. francisco javier kuri con
- Javier canillas
- Francisco javier salazar silva
- Javier solana antichrist
- 5 why washington monument
- Javier royo moya
- Porosidad inercia extensión
- Javier navaridas
- Javier eli dominguez hernandez
- Nelson javier duenas gil
- Dr javier campuzano
- Javier cervera dentiste
- Javier mateo-sagasta
- Valoración abc
- Características de una entrevista
- Juan javier sanchez zavala
- Javier arregui
- Jan eberly ffa facts
- Caracteristicas de empowerment
- Mario javier ojeda hernandez
- Colegio san francisco javier
- Lisosoma función
- Api espinosa
- Javier pilar
- Medikinet 20
- Hardware ocasio
- Dr javier barrera
- Javier en letra gotica
- Francisco javier robles de mendoza
- Javier
- Javier vargas zempoaltecatl
- Francisco javier tapia greave
- Instituto queretano san javier
- Javier de jesús cortés aguirre
- Manchester bridge
- Javier ocasio perez
- Javier royo moya
- Javier calvo height
- Javier gustavo oyarse cruz
- Imagenes de javier cupido es un murcielago
- Javier peralta calvillo
- Bitsdev
- Javier hourcade bellocq
- Javier moreno ffa
- Javier junquera
- Esta enfermo javier cansado
- Previsin
- Nerea gil fernandez
- Javier gilabert
- Javier junquera
- Padre javier len
- Javier rosas hand
- Javier luque di salvo
- Instituto queretano san javier
- Javier junquera
- Javier otazu ojer
- Lecturas domingo xviii tiempo ordinario ciclo b
- Domingo 30 del tiempo ordinario ciclo b
- Dr javier sevilla
- Escuela secundaria 60
- Javier edo meseguer