【问题标题】:Design Patterns used in IOT based home automation system like Alexa基于物联网的家庭自动化系统(如 Alexa)中使用的设计模式
【发布时间】:2019-09-09 04:53:40
【问题描述】:

我正在尝试设计一个基本的基于物联网的家庭自动化系统,例如 Alexa 或 Google Home。那么谁能解释一下 Alexa 或 Google Home 中用于动态注册 Lights 和 Fans 等新设备并对其执行操作的基本设计模式。

我已经通过使用一组固定设备的命令模式实现了这一点,但需要对其进行扩展以处理注册动态运行时新对象而不更改像 Alexa 这样的代码

public SmartHomeDevice getSmartHomeDevice(String deviceName) {
        SmartHomeDevice smartHomeDevice = null;

        if (SmartHomeDeviceCategoryConstants.DRAWING_ROOM_LIGHT.getName().equalsIgnoreCase(deviceName)) {
            smartHomeDevice = new Light(deviceName);
        } else if (SmartHomeDeviceCategoryConstants.LIVING_ROOM_FAN.getName().equalsIgnoreCase(deviceName)) {
            smartHomeDevice = new Fan(deviceName);
        } else if (SmartHomeDeviceCategoryConstants.SMART_CHARGER.getName().equalsIgnoreCase(deviceName)) {
            smartHomeDevice = new ElectricalDevice(deviceName);
        }
        return smartHomeDevice;
    }
}

【问题讨论】:

  • 我认为您正在寻找数据结构,而不是设计模式。一个基本的 Hashmap 可以包含多个唯一命名的项目

标签: java design-patterns alexa


【解决方案1】:

对于家庭自动化,您必须使用命令设计模式参考https://www.geeksforgeeks.org/command-pattern/

【讨论】:

  • 从类图中可以看到有invoker、reciever、command和client
  • 从命令设计模式类图中,有invoker、reciever、client和command。 Invoker 是一个控制命令的远程接口。接收器是您要控制的对象,例如灯光。命令打开或关闭
  • 请在答案中包含您帖子链接中的引用和资源,因为 url 可能指向无效并且资源可能会更改。如果您有其他信息,请编辑您的答案,而不是添加 cmets。
猜你喜欢
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多