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

案例

要求制作一款某智能家居系统,可以让用户选择要控制的家用设备(吊灯,电视机,洗衣机,落地窗),并可以对他们进行打开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()方法实现状态切换。系统采用单例模式管理控制中心,并支持查看所有设备状态,实现了基本的智能家居控制功能。