当前位置: 首页 > news >正文

智能家居设备管理模块开发复盘:类结构设计、状态管理与联动逻辑实现

案例

要求制作一款某智能家居系统,可以让用户选择要控制的家用设备(吊灯,电视机,洗衣机,落地窗),并可以对他们进行打开or关闭操作

package com.iteheima.interface1.demo; public interface Switch { void press();//按压 }

Switch.java

package com.iteheima.interface1.demo; import java.util.Scanner; public class Test { public static void main(String[] args) { //目标:面向对象编程实现智能家居系统 //角色:各种设备 //功能:开和关 //谁来控制:智能控制系统(单例对象) //1.定义设备类:创建设备对象代表家里的设备 //2.准备这些设备对象,放到数组中,代表整个家庭的设备 //3.为每个设备指定一个开关功能,定义一个接口,让JD实现开关功能 //4.创建智能控制类,控制设备开关 JD[] jds = new JD[4]; jds[0] = new TV("小米电视",true); jds[1] = new WashMachine("美的洗烘一体机",true); jds[2] = new Lamp("Philips灯泡",true); jds[3] = new Air("美的空调",true); SmartHomeControl shc = new SmartHomeControl(); //5.控制电视机 SmartHomeControl.control(jds[0]); //6.提示用户操作:展示全部设备的当前情况;让用户选择设备进行操作 System.out.println("请选择设备进行操作:"); Scanner sc = new Scanner(System.in); String command = sc.next(); switch ( command){ case "1": SmartHomeControl.control(jds[0]); break; case "2": SmartHomeControl.control(jds[1]); break; case "3": SmartHomeControl.control(jds[2]); break; case "4": SmartHomeControl.control(jds[3]); break; case "5": SmartHomeControl.control(jds[4]); } } }

Text.java

package com.iteheima.interface1.demo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class JD implements Switch{ private String name; //状态:控制开和关 private boolean isOpen; @Override public void press() { //状态取反,控制设备开和关 isOpen = !isOpen; } }

JD.java

package com.iteheima.interface1.demo; public class WashMachine extends JD{ public WashMachine(String name, boolean isOpen) { super(name, isOpen); } }

WashMachine.java

package com.iteheima.interface1.demo; public class TV extends JD{ public TV(String name, boolean isOpen) { super(name, isOpen);//调用父类的构造方法 } }

TV.java

package com.iteheima.interface1.demo; public class Air extends JD{ public Air(String name, boolean isOpen) { super(name, isOpen); } }

Air.java

package com.iteheima.interface1.demo; public class Lamp extends JD{ public Lamp(String name, boolean isOpen) { super(name, isOpen); } }

Lamp.java

package com.iteheima.interface1.demo; //智能控制系统 public class SmartHomeControl { //多态 public static void control(JD jd){ System.out.println("按下了"+jd.getName()+(jd.isOpen()?"关":"开")); System.out.println("开始您的操作"); jd.press(); System.out.println("按下了已经是"+jd.getName()+(jd.isOpen()?"关":"开")); } public void printAllStatus(JD[] jds){ for (int i = 0; i < jds.length; i++) { System.out.println("名称:"+jds[i].getName()+" 状态:"+jds[i].isOpen()); } } }
SmartHomeControl.java

总结

通过面向对象编程控制家用设备的开关状态。系统定义了Switch接口和JD基类,创建了电视机、洗衣机、灯泡和空调等具体设备类。智能控制类SmartHomeControl通过多态方式统一管理设备开关操作,用户可通过命令行选择设备进行控制。各设备状态通过isOpen属性维护,press()方法实现状态切换。系统采用单例模式管理控制中心,并支持查看所有设备状态,实现了基本的智能家居控制功能。

http://www.jsqmd.com/news/1181258/

相关文章:

  • 执行计划进阶:读懂filtered和rows的组合,精准判断索引设计质量
  • 语音对讲+录像+水印+多分屏:EasyPlayer.js实战功能全盘点
  • 5大核心功能深度解析:Visual Syslog Server的Windows网络日志监控实战宝典
  • vLLM部署MiniMax-M2.7-BF16教程:高效处理大规模文本生成任务
  • Wand-Enhancer实战秘籍:3步解锁专业版完整功能,告别付费订阅
  • 华为OD机试真题 新系统 2026-07-05 PythonJS 实现【SQL记录拆分】
  • 用AI工具实践费曼学习法!把被动输入变成主动输出(附实操全流程
  • 3分钟解决Linux无线网络难题:Realtek RTL8821CU驱动终极指南
  • 【HarmonyOS NEXT】鸿蒙目前最好用的路由管理 HMRouter
  • 武汉名包回收实测指南:本地闲置包包变现完整避坑实操教程 - 奢侈品回收机构参考
  • 城市形态指标(1992-2024)
  • 【ChatGPT客服话术优化实战指南】:20年客服AI落地专家亲授7大话术升维法则,93%响应转化率提升实证
  • 使用 Clap 编写 Rust 命令行 CLI 程序(覆盖所有参数解析类型)
  • 终极指南:如何用SPT-AKI存档编辑器完全掌控你的《逃离塔科夫》离线游戏体验
  • DriftDB实战:10个实时应用场景与代码示例
  • AMD Mistral-7B-Instruct-v0.1_rai_1.7.1_npu_16K模型配置完全指南:genai_config.json详解
  • FinalBurn Neo终极教程:快速掌握免费开源街机模拟器
  • 从BF16到W4A16:AMD gpt-oss-20b模型量化全流程解析(附脚本)
  • 从BERT输出中提取句子向量的三种实践策略
  • 翡翠种水/瑕疵/无证书回收规则|2026上海变现指南 - 奢品小当家
  • 当 AI 开始“查验身份”:深度解析 Claude 身份验证机制背后的技术博弈
  • EulerCopilot witChainD Web构建优化:Vite 5配置与性能调优指南
  • 《交易所惊魂:为什么这一波排队提现的聪明人都选 UKey?》
  • DevSecOps 安全左移:把安全嵌入每一个决策点的工程实践
  • PaddleX 3.0 时序预测产线实战:DLinear 模型预测未来96小时用电量(MSE 0.188)
  • dts-gen完全指南:如何快速生成TypeScript定义文件的终极工具
  • 硬核甄选|2026 哈尔滨黄金回收持证门店公示,备案 CCIC+NGTC 双资质示范门店清单 - 奢侈品回收中心
  • Phi-4-reasoning-plus-w4a16-tao-symchannel-torchao-v0.17.0模型架构解析:40层Transformer与5120隐藏维度
  • MLX生态系统深度整合:将Gemma-4-e2b-it-OptiQ-4bit接入现有AI工作流的终极指南
  • 3分钟彻底解决Windows VC运行库问题:VisualCppRedist AIO完全指南