De nuevo a la carga, después de dejar esto muy parado por los examenes y el trabajo (desconocía que trabajar y estudiar fuera tan dificil), voy a volver a retomarlo donde lo deje.
Todo quedo parado en un problema que no era capaz de resolver. El problema radicaba en el pluginManager, por un defecto de concepto, llegando a ser una limitacion tan importante que me planteé la posibilidad de que no fuera un subproyecto independiente, sino incluir ese código dentro de la lógica de negocio propia de la aplicación.
Desde el principio he intentado que todo el código sea lo más reutilizable posible, y por ello quería que el proyecto se dividiese en subproyectos independientes.
El problema del pluginManager (ahora se llama ManagerPlugin) era la instanciación del plugin, en ese punto todo se desvarataba, por que no lograba instanciar el objeto conociendo sólo la interfaz que implementaba. Ademas ha sido complicado por que los errores que obtenia daban muy poca información y no tenian nada que ver con la verdadera raíz del problema.
La solución, ha sido “la tipificación”, sí, eso que utilizamos ahora para decirle a un objeto “List” que clase de objetos va a contener, y que a los novatos les parece inutil y absurdo.
Con la tipificación podemos crear un manager de plugins diciendole previamente que tipo de objetos va a instanciar, y ello nos ayudara a que luego pueda devolvernos los objetos ya instanciados, de tal manera que nosotros nos olvidamos de toda esa parafernalia, y simplemente nos limitamos a usarlo según indique su interfaz (la del plugin).
Yo tenia mucho interes en que este subproyecto se mantuviera independiente del proyecto completo por que estoy seguro que puede serle muy útil a mucha gente, que estarán interesados en añadir la funcionalidad de soporte de plugins a sus aplicaciones
He de subir los ultimos cambios que he hecho este finde semana, mañana Martes los pondre. Ahora quiero ver si logro organizar un poco todo lo que tengo, que es una locura, por si alguien se anima a probarlo.
Un saludo
Últimos Comentarios...