Patrones
Patrones de Diseño
1
Introducción
• El diseño OO es difícil y el diseño de software orientado a objetos reutilizable lo es aún más. • Los diseñadores expertos no resuelven los problemas desde sus principios; reutilizan soluciones que han funcionado en el pasado.
– Se encuentran patrones de clases y objetos de comunicación recurrentes en muchos sistemasorientados a objetos. – Estos patrones resuelven problemas de diseño específicos y hacen el diseño flexible y reusable.
2
Definición de un patrón
Alexander(arquitecto/urbanista)
Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno y describe también el núcleo de la solución al problema, de forma que puede utilizarse un millón de veces sin tener que hacer dos veces lomismo.
3
Definición de un patrón de diseño [Gamma] Un patrón de diseño es una descripción de clases y objetos comunicándose entre sí adaptada para resolver un problema de diseño general en un contexto particular.
4
Introducción
• Es un tema importante en el desarrollo de software actual: permite capturar la experiencia • Busca ayudar a la comunidad de desarrolladores de software aresolver problemas comunes, creando un cuerpo literario de base
– Crea un lenguaje común para comunicar ideas y experiencia acerca de los problemas y sus soluciones
• El uso de patrones ayuda a obtener un software de calidad (reutilización y extensibilidad)
5
Elementos de un patrón
• Nombre: describe el problema de diseño. • El problema: describe cuándo aplicar el patrón. • La solución:describe los elementos que componen el diseño, sus relaciones, responsabilidades y colaboración.
6
Más información en...
• Desing Patterns. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison Wesley, 1995. • Patterns Home Page: http://hillside.net/patterns/ • Thinking in patterns with java
http://www.mindview.net/Books/TIPatterns/
7
Clasificación de lospatrones
• Según su propósito:
– De creación: conciernen al proceso de creación de objetos. – De estructura: tratan la composición de clases y/o objetos. – De comportamiento: caracterizan las formas en las que interactúan y reparten responsabilidades las distintas clases u objetos.
8
Clasificación de los patrones
GoF (gang of Four) [Gamma] Propósito Ámbito Clase
Factory Method Adapter AdapterAbstract Factory Bridge Composite Decorator Facade Flyweight Proxy Interpreter Template Method Chain of Responsability Command Iterator Mediator Memento Observer State Strategy Visitor
9
Creación
Estructural
Comportamiento
Objeto
Builder Prototype Singleton
Además: Patrón Delegation
Patrón DELEGATION
Utilidad: Cuando se quiere extender y reutilizar la funcionalidad de unaclase SIN UTILIZAR LA HERENCIA Ventajas: • En vez de herencia múltiple • Cuando una clase que hereda de otra quiere ocultar algunos de los métodos heredados • Compartir código que NO se puede heredar
10
Patrón DELEGATION
El problema Clase A a1() …. Clase B b1(),b2() ….
Clase C a1(), b1(), b2() …. - El lenguaje utilizado NO PERMITE HERENCIA MÚLTIPLE - La clase C no desea TODOS los métodosde B
11
Patrón DELEGATION
La solución Clase A a1() …. usa Clase C a1(), b1() …. Clase B b1(), b2() ….
El método b1() habrá que añadirlo a C
NO USAR HERENCIA SINO LA RELACIÓN “USA”
12
Patrón DELEGATION
Implementación
class C extends A { B objB; C ( ) { // En la constructora se puede crear obj. de B objB=new B(); } void b1( ) { objB.b1( );} ….
13
Clasificación de lospatrones
GoF (gang of Four) [Gamma] Propósito Ámbito Clase
Factory Method Adapter Adapter Abstract Factory Bridge Composite Decorator Facade Flyweight Proxy Interpreter Template Method Chain of Responsability Command Iterator Mediator Memento Observer State Strategy Visitor
14
Creación
Estructural
Comportamiento
Objeto
Builder Prototype Singleton
Patrón SINGLETON
• Utilidad
–...
Regístrate para leer el documento completo.