【发布时间】: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