Hola @jzyong,
AppBydr.main() inicializa manualmente cuatro subsistemas (Redis, MongoDB, ScriptManager y BydrServer) en un orden específico. El mismo patrón se repite, casi idéntico, en AppCluster, AppGate y AppHall.
Situación actual: el cliente (main) conoce y coordina directamente cada subsistema, lo que dificulta mantener el orden de arranque consistente y complica agregar nuevos subsistemas.
Solución propuesta:
Introducir una clase BydrBootstrapFacade con un único método start(configPath): BydrServer que encapsule la secuencia de inicialización.
Beneficio:
Un punto único de mantenimiento para el arranque, y un patrón reutilizable para simplificar los demás módulos del proyecto. Quedamos atentos a sus comentarios.
- Implementación de BydrBootstrapFacade
public class BydrBootstrapFacade {
private JedisManager redisManager;
private BydrServer bydrServer;
public BydrServer start(String configPath) {
redisManager = new JedisManager(configPath);
redisManager.initScript(configPath);
JedisManager.setRedisManager(redisManager);
MongoManager.getInstance().createConnect(configPath);
ScriptManager.getInstance().init(str -> System.exit(0));
bydrServer = new BydrServer(configPath);
new Thread(bydrServer).start();
return bydrServer;
}
}
- Implementación simplificada en AppBydr
public final class AppBydr {
private static final Logger LOGGER = LoggerFactory.getLogger(AppBydr.class);
private static String configPath;
private static BydrServer bydrServer;
private AppBydr() {
}
public static void main(String[] args) {
initConfigPath();
// Ahora AppBydr utiliza la fachada para iniciar todos los sistemas
bydrServer = new BydrBootstrapFacade().start(configPath);
}
private static void initConfigPath() {
File file = new File(System.getProperty("user.dir"));
if ("target".equals(file.getName())) {
configPath = file.getPath() + File.separatorChar + "config";
} else {
configPath = file.getPath() + File.separatorChar + "target" + File.separatorChar + "config";
}
LOGGER.info("配置路径为: " + configPath);
}
public static BydrServer getBydrServer() {
return bydrServer;
}
public static String getConfigPath() {
return configPath;
}
}

Hola @jzyong,
AppBydr.main() inicializa manualmente cuatro subsistemas (Redis, MongoDB, ScriptManager y BydrServer) en un orden específico. El mismo patrón se repite, casi idéntico, en AppCluster, AppGate y AppHall.
Situación actual: el cliente (main) conoce y coordina directamente cada subsistema, lo que dificulta mantener el orden de arranque consistente y complica agregar nuevos subsistemas.
Solución propuesta:
Introducir una clase BydrBootstrapFacade con un único método start(configPath): BydrServer que encapsule la secuencia de inicialización.
Beneficio:
Un punto único de mantenimiento para el arranque, y un patrón reutilizable para simplificar los demás módulos del proyecto. Quedamos atentos a sus comentarios.
public class BydrBootstrapFacade {
}
public final class AppBydr {
}