智能家居设备管理模块开发复盘:类结构设计、状态管理与联动逻辑实现
案例要求制作一款某智能家居系统可以让用户选择要控制的家用设备吊灯电视机洗衣机落地窗并可以对他们进行打开or关闭操作package com.iteheima.interface1.demo; public interface Switch { void press();//按压 }Switch.javapackage 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.javapackage 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.javapackage com.iteheima.interface1.demo; public class WashMachine extends JD{ public WashMachine(String name, boolean isOpen) { super(name, isOpen); } }WashMachine.javapackage com.iteheima.interface1.demo; public class TV extends JD{ public TV(String name, boolean isOpen) { super(name, isOpen);//调用父类的构造方法 } }TV.javapackage com.iteheima.interface1.demo; public class Air extends JD{ public Air(String name, boolean isOpen) { super(name, isOpen); } }Air.javapackage com.iteheima.interface1.demo; public class Lamp extends JD{ public Lamp(String name, boolean isOpen) { super(name, isOpen); } }Lamp.javapackage 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()方法实现状态切换。系统采用单例模式管理控制中心并支持查看所有设备状态实现了基本的智能家居控制功能。