Quiero crear una clase remota universal a la que se conecten varios dispositivos. Sé que no se extenderán desde el control remoto, pero no estoy seguro de cómo enviaría un comando de encendido/apagado a todos ellos.
Estaba pensando como:
const tv = new TV() tv.isOn // gives false const light = new Light() light.isOn // gives false const xbox = new Xbox() xbox.isOn // gives false const remote = new Remote() remote.on() tv.isOn // gives true light.isOn // gives true xbox.isOn // gives trueEntonces, ahora, si verifica como el objeto de TV para ver si estaba encendido, sería o las luces, etc.
En mi cabeza
class TV extends Remotesuena tonto pero no puedo pensar en una forma en la que simplemente llamar a la clase remota cambiaría todos los demás objetos. Soy bastante nuevo en la codificación, por lo que agradecería cualquier ayuda.
Extender el control remoto no lo ayudará, ya que aún tendrá diferentes instancias (extender una clase solo proporcionará los métodos de esa clase, pero no compartirá el estado con otras instancias).
Una solución para su problema sería hacer que la función on ( toggle sería un mejor nombre para alternar entre encendido y apagado ) acepte una lista de dependencias que se actualizarían ( todavía necesita saber las instancias de los dispositivos que desea activar/desactivar ya que necesita pasarlos a esa función ).
La función de alternar puede simplemente negar el valor anterior this.isOn = !this.isOn dependiendo de sus necesidades (ahora mismo usted controla si todos ellos están activados/desactivados, al pasar el valor boolean , todos estarán sincronizados todo el tiempo -- excepto cuando se instancian con diferentes estados).
class Device { constructor(state = false) { this.isOn = state; } toggleState(state) { this.isOn = state; } } class TV extends Device {} class Xbox extends Device {} class Light extends Device {} class Remote { toggle(state, devices = []) { devices.forEach(device => { device.toggleState(state); }) } } const tv = new TV(); const xbox = new Xbox(); const light = new Light(); const remote = new Remote(); console.log(tv.isOn); console.log(xbox.isOn); console.log(light.isOn); remote.toggle(true, [ tv, xbox, light ]); console.log(tv.isOn); console.log(xbox.isOn); console.log(light.isOn);¿Es esto lo que estás buscando?