代码之家  ›  专栏  ›  技术社区  ›  TryingToLearn

我如何为通用遥控器构造一个类,该遥控器向连接到它的各种设备发送开/关命令?

  •  1
  • TryingToLearn  · 技术社区  · 2 年前

    我想创建一个通用远程类,其中连接了多个设备。我知道它们不会从远程扩展,但不确定我将如何向它们所有人发送关机/开机命令。

    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 true
    

    在我脑海里

    class TV extends Remote
    

    1 回复  |  直到 2 年前
        1
  •  1
  •   Cristian-Florin Calina    2 年前

    扩展远程对象对您没有帮助,因为您仍然会有不同的实例(扩展一个类只会提供该类中的方法,但不会与其他实例共享其状态)。

    on toggle 在开和关之间切换是一个更好的名称 )函数接受将更新的依赖项列表( ).

    切换函数只能对之前的值求反 this.isOn = !this.isOn boolean 它们将始终保持同步——除非它们被实例化为不同的状态)。

    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);

    这就是你要找的吗?