ensayo
Clases 12 a 14 del curso 6.170
2, 3 y 10 de octubre de 2001
1. Patrones de diseño
Un patrón de diseño es:
•
•
•
•
•
•
•
una solución estándar para un problema común de programación
una técnica para flexibilizar el código haciéndolo satisfacer ciertos criterios
un proyecto o estructura de implementación que logra una finalidad determinada
un lenguaje deprogramación de alto nivel
una manera más práctica de describir ciertos aspectos de la organización de un
programa
conexiones entre componentes de programas
la forma de un diagrama de objeto o de un modelo de objeto.
1.1 Ejemplos
Les vamos a presentar algunos ejemplos de patrones de diseño que ya conocen. A cada diseño
de proyecto le sigue el problema que trata de resolver, la solución queaporta y las posibles
desventajas asociadas. Un desarrollador debe buscar un equilibrio entre las ventajas y las
desventajas a la hora de decidir que patrón utilizar. Lo normal es, como observará a menudo
en la ciencia computacional y en otros campos, buscar el balance entre flexibilidad y
rendimiento.
Encapsulación (ocultación de datos)
Problema: los campos externos pueden ser manipuladosdirectamente a partir del
código externo, lo que conduce a violaciones del invariante de representación o
a dependencias indeseables que impiden modificaciones en la implementación.
Solución: esconda algunos componentes, permitiendo sólo accesos estilizados al
objeto.
Desventajas: la interfaz no puede, eficientemente, facilitar todas las operaciones
deseadas. El acceso indirecto puede reducir elrendimiento.
Subclase (herencia)
Problema: abstracciones similares poseen miembros similares (campos y métodos).
Esta repetición es tediosa, propensa a errores y un quebradero de cabeza
durante el mantenimiento.
Solución: herede miembros por defecto de una superclase, seleccione la
implementación correcta a través de resoluciones sobre qué implementación
debe ser ejecutada.
Desventajas:el código para una clase está muy dividido, con lo que, potencialmente,
se reduce la comprensión. La introducción de resoluciones en tiempo de
ejecución introduce overhead (procesamiento extra).
Iteración
Problema: los clientes que desean acceder a todos los miembros de una colección
deben realizar un transversal especializado para cada estructura de datos, lo que
introduce dependenciasindeseables que impiden la ampliación del código a
otras colecciones.
Solución: las implementaciones, realizadas con conocimiento de la representación,
realizan transversales y registran el proceso de iteración. El cliente recibe los
resultados a través de una interfaz estándar.
Desventajas: la implementación fija la orden de iteración, esto es, no está controlada
en absoluto por el cliente.Excepciones
Problema: los problemas que ocurren en una parte del código normalmente han de ser
manipulados en otro lugar. El código no debe desordenarse con rutinas de
manipulación de error, ni con valores de retorno para identificación de errores.
Solución: introducir estructuras de lenguaje para arrojar e interceptar excepciones.
Desventajas: es posible que el código pueda continuar aúndesordenado. Puede ser
difícil saber dónde será gestionada una excepción. Tal vez induzca a los
programadores a utilizar excepciones para controlar el flujo normal de
ejecución, que es confuso y por lo general ineficaz.
Estos patrones de diseño en concreto son tan importantes que ya vienen incorporados en Java.
Otros vienen incluidos en otros lenguajes, tal vez algunos nunca lleguen a estarincorporados
a ningún lenguaje, pero continúan siendo útiles.
1.2 Cuando (no) utilizar patrones de diseño
La primera regla de los patrones de diseño coincide con la primera regla de la optimización:
retrasar. Del mismo modo que no es aconsejable optimizar prematuramente, no se deben
utilizar patrones de diseño antes de tiempo. Seguramente sea mejor implementar algo primero
y asegurarse de que...
Regístrate para leer el documento completo.