Sé que la dependencia circular se considera un problema de diseño, pero ¿y si no es posible rediseñar el programa? ¿Es una mala práctica resolverlo con eventos?
Por ejemplo, digamos que tengo dos clases a las que quiero llamar methodB from ClassA y methodA from ClassB .
La solución se ve así:
class ClassA { classB: ClassB; constructor() { this.classB = new ClassB(); this.classB.methodB(); this.classB.eventEmitter.on('callMethodA', (data) => { this.methodA(data); }); } methodA(data) { console.log(data); } } class ClassB { eventEmitter: EventEmitter; constructor() { this.eventEmitter = new events.EventEmitter(); this.eventEmitter.emit('callMethodA', 'some data'); } methodB() { console.log("hello"); } }Hay 2 desventajas que se me ocurren:
ClassB no puede obtener el valor de retorno de los métodos en ClassA .ClassA debe ser Singelton para evitar oyentes duplicados.¿Se considera una mala práctica? ¿Cuáles son las alternativas?