Este documento describe los patrones de diseño. Explica que los patrones de diseño son modelos para comunicar soluciones a problemas comunes de software. Describe que los patrones tienen cuatro elementos: nombre, problema, solución y consecuencias. También habla sobre tipos de patrones como creacionales, estructurales y de comportamiento. Finalmente, explica el patrón solterón como un patrón creacional que garantiza que una clase tenga una única instancia.
2. Propósito
El desarrollo de clases reusables toma
tres veces mas tiempo.
El uso de patrones permite hacer
clases reusables y extensibles,
documentando soluciones comunes a
problemas comunes.
CAL/Fundamentos 2
3. Propósito
El patrón de diseño es una
estructura abstracta de una solución
común a un problema común.
Nadie tiene un diseño reusable
correcto a la primera vez.
CAL/Fundamentos 3
4. Definición
Patrones de diseño son modelos para
comunicar, identificar y recordar
soluciones a problemas comunes.
Tienen 4 elementos:
Nombre del patrón:
Solteron, fabrica, prototipo
Problema:
Motivación, intensión, por ejemplo del solterón
es prevenir de crear mas de una instancia de
una clase.
CAL/Fundamentos 4
5. Definición
Solución:
Especifica los elementos que constituyen el
patrón tal como, clases, métodos, interfaces,
estructuras de datos y algoritmos. También
incluye las relaciones, responsabilidades y
colaboraciones de los diferentes elementos.
Consecuencias:
Resultados.
CAL/Fundamentos 5
6. Refactoring
Muchos de los problemas que se
encuentran en la industria se han
experimentado por muchos años. Por lo
tanto las soluciones Refactorizadas estan
disponibles en la comunidad de
desarrolladores como un Tipo de
Patrón esto es, una solución recurrente
que incluye elementos comunes aunque
la implementación específica varíe.
CAL/Fundamentos 6
7. Patrones - Literatura
Antipatterns, by William J. Brown, ... Wiley
Computer Pub., 1998.
Analysis Patterns: Reusable Object Models,
Martin Fowler (Addison Wesley, 1997)
Design Pattern: Elements of Reusable Object-
Oriented Software, Erich Gamma, Richard
Helm, Ralph Johnson y John Vlissides, Addison
Wesley 1994.
Pattern-Oriented Software Architecture: A
System of Patterns, Frank Buschmann, John
Wiley & sons, 1996.
CAL/Fundamentos 7
8. Abstract Data Type
Un tipo de dato abstracto separa el
que del como. (implementación).
CAL/Fundamentos 8
9. Tipos de Patrones
Creacionales:
Crean objetos de la clase correcta,
particularmente útiles cuando se toma ventaja
del polimorfismo.
Estructurales:
Forman estructuras mas grandes de partes
individuales, generalmente de clases
diferentes.
De Comportamiento:
Describen interacción entre objetos.
CAL/Fundamentos 9
10. Tipos de Patrones
Por su alcance los patrones pueden ser:
Patrones de objetos
Especifican relaciones entre objetos. En general el
propósito es permitir que las instancias de diferentes
clases sean usadas en el mismo lugar en un patrón.
Evitan fijar la clase que acomete una tarea dada en
tiempo de compilación, en vez de ello la clase actual del
objeto puede escogerse en tiempo de ejecución. –
Frecuentemente usa composición de objetos para
establecer relaciones entre objetos.
CAL/Fundamentos 10
11. Tipos de Patrones
Patrones de Clases
Especifican relaciones entre clases y sus
subclases. Tienden a usar herencias para
establecer relaciones. Fija relaciones en tiempo
de compilación.
CAL/Fundamentos 11
12. Diez componentes
Intención:
El problema que el patrón trabaja.
Motivación:
El escenario
Aplicabilidad:
Describe las circunstancias bajo las cuales es
apropiado su uso.
Estructura:
Muestra normalmente un conjunto de objetos o
diagramas de clase.
CAL/Fundamentos 12
13. Diez componentes
Participantes:
Son las clases y objetos que los
comprenden.
Colaboraciones:
Describen como las clases y objetos fuera
del patrón interactúan con el patrón.
Consecuencias:
Resultados de escoger un patrón-> + ó -
CAL/Fundamentos 13
14. Diez componentes
Implementación
Conjunto de códigos que usa el patrón.
Detalles y trucos que se necesita hacer
para que funciones.
Usos (Know uses):
Sistemas donde se halla el patrón.
Ejemplos prácticos.
Patrones relacionados.
CAL/Fundamentos 14
15. Patrón solteron
El patrón solterón es un patrón creacional
de objetos. Creacional porque esta
relacionado en si mismo con la creación de
objetos, mas específicamente con
asegurarse que no se cree mas de un
objeto. Es un patrón de objetos pues
trabaja con los vínculos entre objetos en
vez de las relaciones entre clases y sus
subclases.
CAL/Fundamentos 15
16. Patrón solteron
Intención del solteron:
Garantizar que una clase tenga solo una
instancia.
Proporcionar acceso a dicha instancia.
CAL/Fundamentos 16
17. Patrón solteron
Motivación:
Es que algún objeto del mundo real no
tenga mas de una instancia. Ej. Muchos
computadores solo tienen una salida de
audio y solo pueden ejecutar un sonido.
CAL/Fundamentos 17
18. Patrón solteron
Aplicabilidad:
La clase deberá tener exactamente una
instancia la cual deberá ser accesible
desde un método en la clase.
La clase puede tener subclases y los
clientes pueden usar la subclase como una
instancia de la superclase sin tener que
cambiar de código.
CAL/Fundamentos 18
20. Patrón solteron
Estructura:
Consiste de una única clase. Esta clase toma el
rol de singleton en la operación. Sin embargo no
es necesario que se llame singleton.
Esta clase tiene un único campo llamado
theInstance el que apunta al objeto que es la
única instancia.
La aplicabilidad de un patrón describe las
circunstancias bajo las cuales el patrón es
apropiado; esto es, cuando debiera y cuando no
debiera usarse.
CAL/Fundamentos 20
21. Patrón solteron
La clase singleton tiene dos métodos, un
método estático getInstance() que
regresa un apuntador o referencia a la
única instancia y un constructor
protegido.
CAL/Fundamentos 21