Hace poco que comence con java y me encuentro armando una aplicacion standalone que consta de un Servidor y Clientes.
La parte de TCP ya la termine y anda bastante bien, defini un protocolo para los distintos tipos de pedidos que se le puedan hacer al Servidor, tengo una clase para acceder a la base de datos y en el Cliente tengo un Singleton para toda la parte esa de la comunicacion ( con el connect, send , etc ) y recibo los mensajes del Servidor en un Thread que los deriva a quienes lo necesiten.
Hasta ahi venia bien pero me surgio un problema bastante grave a la hora de definir exactamente como crear el resto de la aplicacion. Empece por una ventana con un TabbedPane donde pongo las distintas secciones a las que puede acceder el usuario pero me cuesta horrores mantener el "quien conoce a quien" y un acceso limpio entre un componente y el que lo necesita.
Se me ocurrio usar MVC, empece a declarar todos los modelos como Singleton pero a la larga me di cuenta que era malo.. entonces pregunto, como puedo solucionar eso?
Lo unico que se me ocurrio, es optar un por un unico Singleton que tenga alguna Hastable con referencias a todos los modelos del sistema y usarlo para conseguir las referencias del modelo que necesito... no me termino de convencer. Quiza exista algun patron de diseño mejor, lei algo sobre Fachadas pero la mayoria de los ejemplos estaban como para web, no se si me servira para lo que quiero hacer.
Algun consejo?