Pedro del Gallego's Weblog
miércoles agosto 13, 2003
Revisado : El patron Front Controller 1ª parte Bueno siguiendo el consejo de
Al, he decidido cambiar la implementacion del ActionFactory para que solo se instancie una vez cada accion y luego se reutilice esta instancia el resto de las veces.
public class AccionFactory {
// tabla para guardar las acciones
private static Hashtable mapaAcciones = new Hashtable();
public static Accion getAccion(String accion){
Accion action = (Accion) mapaAcciones.get(accion);
if (action==null){
try {
action = (Accion)Class.forName(accion).newInstance();
mapaAcciones.put(accion, action);
} catch (InstantiationException e) {
System.out.println("Error al instanciar la clase");
e.printStackTrace();
} catch (IllegalAccessException e) {
System.out.println("Acceso Ilegal a no se que ¿?");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("Tas tonto esa clase no existe");
e.printStackTrace();
}
}
return action;
}
}
Bueno en principio cada clase que implemente accion se instancia una unica vez y es almacenada en una Hashtable. Pero no daria esto problemas de concurrencia si se solicitan a la vez dos instancias de esa accion? no termino de verlo del todo claro... voy a darle un par de vueltas a ver si veo donde me he perdido. + criticas please...
Bueno a parte de esto he hecho una pequeña modificacion para que el fichero de configuracion quedase tal que asi:
comprar=comprarAccion
elegir=elegirAccion
devolver=devolveAccion
buscar=buscarAccion
inicio=inicioAccion
Que siempre queda algo mas fino. Para extraer la accion de la URI he añadido el metodo
private String getClassName(String nombre){
int barra = nombre.lastIndexOf("/");
int punto = nombre.lastIndexOf(".");
if ((barra<=0)&&(punto<=0)) return nombre;
return nombre.substring(barra+1,punto);
}
PD Al, de esta semana no pasa que no me baje el codigo y la documentacion de Cañamo. No se si sabre implementar algo o sugerir alguna mejora del diseño, pero por lo menos que no se diga que no lo intento (Que despues hablamos de sensacion de comunidad y de implicacion, y yo soy el primero en dar mal ejemplo). Ademas que ya has tirado unas cuantas indirectas y muchos nos hacemos lo locos, ya va siendo hora.
( ago 13 2003, 05:35:22 PM CEST )
Permalink