Академический Документы
Профессиональный Документы
Культура Документы
http://www.javaHispano.org
Copyright (c) 2002, Alberto Molpeceres. Este documento puede ser distribuido solo bajo los
trminos y condiciones de la licencia de Documentacin de javaHispano v1.0 o posterior (la ltima
versin se encuentra en http://www.javahispano.org/licencias/).
Diseo de Software con Patrones (parte 3)
Pgina 2
Diseo de Software con Patrones (parte 3)
portero que un delantero, al menos por ningn portero se pagan 10.000 millones ;-). Ya
sea porque le dejamos al usuario configurarlo, o porque nosotros lo hemos codificado as,
resulta poco til, al menos normalmente, saber cuantos goles a metido un portero (si, no
soy un fantico futbolero pero conozco a Chilavert ;-) ), lo mismo que cuantas paradas ha
hecho un delantero. Lo habitual es que esos datos sean 0 permanentemente, es decir, no
aportan nada.
Ok, pasemos a implementarlo. Lo digo entre comillas porque no lo har entero, claro
esta. Primero supongamos la clase Jugador con los datos bsicos, como nombre, edad,
equipo, etc.
Y ahora supongamos las subclases de Jugador, aqui por ejemplo, Delantero (con el
resto de tipos de jugadores sera lo mismo), con toda la informacin que queramos sobre
su rendmiento:
Estas son las clases del negocio. Las clases que tienen la informacin que interesa en
nuestra aplicacin. Por supuesto faltan muchas ms, pero en fin, yo no estoy haciendo un
clnico open source del (difunto) PCFtbol ;-).
Ahora pasemos a las clases que manejan la interface de usuario, al menos en la parte
que muestra la informacin de los jugadores.
Primero definiremos una clase abstracta que acte como base de las dems, y que
realice las tareas comnes, como sera mostrar el nombre, la edad, y dems informacin
contenida en la clase Jugador. Aqui tambin podemos poner los controles que
necesitemos para mostrar ms detalles, o cerrar la ventana, o, si como he dicho, estamos
haciendo el clnico del PCFtbol, para poner los botones de despedir o hacer oferta para
gestionar nuestro equipo.
Pgina 3
Diseo de Software con Patrones (parte 3)
Ahora pasemos a hacer las tareas exclusivas del delantero, es decir, el constructor (el
constructor de su interface, no de su clase) del delantero:
Por ltimo nos queda crear una pequea factora que nos devuelva el panel adecuado
al tipo de Jugador que estemos tratando:
y colocar el panel que obtenemos donde queramos (una ventana, un cuadro de dilogo,
una ventana interna, etc) por medio de:
ventana.add (pj.getIU());
Como he dicho antes, tampoco tenemos que tener clases separadas para cada tipo de
jugador, puede ser que tengamos una clase Jugador con todos los atributos, y luego, que
una de las opciones del programa fuera dejarle al usuario definir que datos mostrar de
cada tipo. En ese caso, el dato diferencial sera la posicin del jugador, que indicara que
instancia tomar de la clase que contuviera la informacin sobre que datos mostrar para
esa posicin.
Pgina 4
Diseo de Software con Patrones (parte 3)
Este ejemplo es ampliable, por ejemplo, usando nuevos parametros que indiquen si
estamos en modo de edicin o no, para determinar si mostramos botones para guardar
los datos o cancelar los cambios, o para saber si mostramos la informacin en etiquetas o
cajas de texto.
A su vez, este patrn es aplicable no slo a distintas clases de datos, como tipo de
jugador o tipo de vehculo (no es lo mismo un coche que un camin), si no que tambin
puede aplicarse a una misma clase en funcin de la cantidad de informacin que
tengamos. Por ejemplo, si tenemos que seleccionar varios valores de una lista de
elementos, si son pocos elementos, podemos ofrecer una serie de checkbox, pero si son
muchos mejor una lista con posibilidad de multiseleccin.
La idea principal de este patrn es la de separar lo ms posible los datos de su
representacin, y para eso Java es un lenguaje ms que apropiado. Podemos variar la
representacin de los objetos segn nos interese, sin tener que tocar las clases que
almacenan los datos.
Adems, cada constructor es independiente de los dems, as que un cambio en la
representacin de los porteros, o de la clase base Jugador, no afecta en nada a las
dems.
Conclusin
Con esto hemos acabado con los patrones de creaccin fundamentales, no son los
nicos y quizs no los mejores, pero recordar que los patrones solo son soluciones
Pgina 5
Diseo de Software con Patrones (parte 3)
aceptadas como buenas a problemas comnes, una forma de hacer software los ms
reusable, adaptable, ampliable, y consistente posible, pero como en todo, para gustos los
colores.
En el prximo artculo, empezaremos con otro tipo de patrones, los estructurales.
Espero que llegue pronto, aunque quizs me dedique ms a escribir sobre Java y menos
sobre estas cosas que no se si interesan.
Recursos y referencias
[1] Diseo de Software con Patrones (parte 2), http://www.javahispano.org/articulos/ver_articulo.jsp?id=20
[2] Diseo de Software con Patrones (parte 1), http://www.javahispano.org/articulos/ver_articulo.jsp?id=4
[3] Como ordenar colecciones de objetos, http://www.javahispano.org/articulos/ver_articulo.jsp?id=51
[4] Serializacin en Java, http://www.javahispano.org/articulos/ver_articulo.jsp?id=34
Copyright (c) 2002, Alberto Molpeceres. Este documento puede ser distribuido solo bajo los
trminos y condiciones de la licencia de Documentacin de javaHispano v1.0 o posterior (la ltima
versin se encuentra en http://www.javahispano.org/licencias/).
Pgina 6