Está en la página 1de 3

Denis Alfaro

Definición

1. Situación respecto a la noción de objeto

Un objeto no construye una aplicación. Lo importante, tanto como los mecanismos que permiten trabajar
con los objetos, son aquellos que permiten gestionar la manera en que estos interactúan ante una
problemática para dar respuesta a una funcionalidad.

Para ello se utiliza, de manera consciente o no, patrones de diseño que se corresponden, cada uno, con
una forma de hacer interactuar los objetos entre sí. Existen varios tipos de patrones, destinados a
gestionar problemáticas que pueden parecer similares pero que tienen, cada una de ellas, un contexto de
aplicación o un destino particular. Son tan numerosos que haría falta un libro entero dedicado al tema
para presentarlos todos, lo cual escapa del interés de esta obra.

La mayoría de los patrones se conciben para responder a una problemática concreta. Son la síntesis de
experiencias importantes y significativas y se describen con precisión utilizando distintos objetos, cuyos
roles e interacciones se describen a su vez.

Su conocimiento permite estandarizar el diseño de aplicaciones, implementar herramientas para


reproducir las buenas prácticas y mejorar, proyecto tras proyecto, los procesos de construcción de
aplicaciones utilizando soluciones normalizadas.

No obstante, la mayoría de los libros de referencia sobre el tema están adaptados a lenguajes particulares
o, quizás, generalizados para tipos de lenguajes particulares, tales como los lenguajes con tipado
estático. Conviene, por ello, invertir algo de tiempo en analizarlos para adaptarlos a Python, lo cual puede
producir soluciones originales.

2. Organización del capítulo

El objetivo de este capítulo es presentar un subconjunto de estos patrones de diseño (los más conocidos
y utilizados) de manera que el desarrollador pueda identificar una problemática y, a continuación, utilizar
uno u otro en función de la solución que mejor se adapte a él, basándose en una reflexión fruto del
conocimiento de las soluciones más

© Éditions ENI - Todos los derechos reservados - Copia personal de Denis Alfaro -1-
Denis Alfaro

habituales. La alternativa supone la búsqueda, por cuenta propia, de la resolución del problema, lo cual
puede resultar estimulante para proyectos personales, pero presenta un riesgo en el caso de estar
trabajando en proyectos profesionales, dado que puede producirse algún error o una respuesta que
resuelva el problema pero de manera poco óptima o, en el mejor de los casos, habiendo perdido el tiempo.

Los patrones de diseño que se describen son aquellos que se encuentran más estandarizados y se
dividen en tres categorías:

ˇ patrones de creación o de construcción;


ˇ patrones de estructuración;
ˇ patrones de comportamiento.

Los conceptos se presentarán con las problemáticas relacionadas y las soluciones propuestas por Python
y su modelo de objetos.

Los ejemplos escogidos son, de manera intencionada, muy simples funcionalmente, de modo que ningún
elemento funcional inútil nos distraiga de los elementos técnicos que están vinculados con el patrón de
diseño, dado que es lo que realmente importa.

Además del modelo de objetos clásico de Python que permite crear soluciones propias para implementar
un patrón de diseño, existe la ZCA (Zope Component Architecture), que ofrece herramientas óptimas y
potentes para integrar algunos patrones de diseño con un uso sencillo y eficaz de las funciones que
realizan los patrones. Estas soluciones se agrupan al final del capítulo y no se abordan en las secciones
intermedias.

3. Situación respecto a otros conceptos

Es importante no confundir los patrones de diseño con los patrones de arquitectura. Estos últimos no se
aplican a las relaciones entre objetos, sino entre componentes, y están situados un nivel por encima. Se
trata de definir una tipología de objetos. Pueden, no obstante, utilizar uno o varios patrones de diseño.

De este modo, por ejemplo, el patrón de arquitectura más conocido es el MCV, que utiliza varios patrones
de diseño que son Observador, Estrategia y Composite.

© Éditions ENI - Todos los derechos reservados - Copia personal de Denis Alfaro -2-
Denis Alfaro

Por otro lado, no deben confundirse los patrones de diseño con lo que podríamos llamar modismos de
programación, es decir, una construcción sintáctica particular para responder a una necesidad primitiva
particular como, por ejemplo, indicar una condición, iterar, validar un valor, agregar un dato, gestionar un
recurso...

Por ejemplo, para repetir x veces la misma acción, en C se escribe:

for( int i=0 ; i<100; i++) { ...

Mientras que en Python se escribe:

for i in range(100): ...

Lo que debemos recordar es que los patrones de diseño se sitúan entre ambos conceptos y conciernen a
la interacción entre los objetos.

© Éditions ENI - Todos los derechos reservados - Copia personal de Denis Alfaro -3-

También podría gustarte