接口基础-智能家居控制系统
目录
案例要求
实现思路
代码
Main
JD
TV
Lamp
WashMachine
Air
Switch
OperateStatus
总结:
案例要求(融合单例模式)
实现思路
实体类,按按钮设置接口,JD设置家电父类,子类有灯,空调,电视,洗衣机继承JD,JD实现按钮,便于子类能实现控制开关的功能,设置一个实现类,实现展示所有电子设备和开关的功能
代码
Main
import java.io.IOException;
import java.util.Scanner;//TIP 要<b>运行</b>代码,请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {static Scanner sc = new Scanner(System.in);public static void main(String[] args) throws IOException, InterruptedException {JD [] jds= new JD[4];jds[0]=new Air("空调",true);jds[1]=new WashMachine("洗衣机",true);jds[2]=new Lamp("灯泡",true);jds[3]=new TV("电视机",true);OperateStatus os = OperateStatus.getInstance();while (true) {os.printAllStatus(jds);System.out.println("请选择你要操作的电器:1.空调 2.洗衣机 3.灯泡 4.电视机 exit.退出");String choice= sc.next();switch (choice){case "1":os.control(jds[0]);break;case "2":os.control(jds[1]);break;case "3":os.control(jds[2]);break;case "4":os.control(jds[3]);break;case "exit":System.out.println("已退出");return;default:System.out.println("输入错误!");}}}
}
JD
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class JD implements Switch{private String name;private boolean status;@Overridepublic void opress() {status=!status;}
}
TV
public class TV extends JD{public TV() {}public TV(String name, boolean status) {super(name, status);}
}
Lamp
public class Lamp extends JD{public Lamp() {}public Lamp(String name, boolean status) {super(name, status);}
}
WashMachine
public class WashMachine extends JD{public WashMachine() {}public WashMachine(String name, boolean status) {super(name, status);}
}
Air
public class Air extends JD{public Air() {}public Air(String name, boolean status) {super(name, status);}}
Switch
public interface Switch {public void opress();
}
OperateStatus
public class OperateStatus {public static final OperateStatus os = new OperateStatus();private OperateStatus(){}public static OperateStatus getInstance(){return os;}public void printAllStatus(JD[] jds){for (JD jd:jds){System.out.println("当前设备为: "+jd.getName()+"开关状态:"+(jd.isStatus()?"开着":"关着"));}}public void control(JD jd) {System.out.println("当前设备状态为"+((jd.isStatus())?"开着":"关着"));System.out.println("开始您的操作...");jd.opress();System.out.println("当前设备状态为"+((jd.isStatus())?"开着":"关着"));System.out.println("操作结束...");}
}
总结:
摘要:该程序实现了一个家电控制系统,采用面向对象设计。JD类作为家电父类实现了Switch接口的开关功能,被子类Air(空调)、WashMachine(洗衣机)、Lamp(灯泡)和TV(电视机)继承。OperateStatus类负责展示设备状态和开关控制。主程序Main创建家电数组,通过循环菜单让用户选择设备进行开关操作。系统使用Lombok简化代码,实现了设备状态的实时显示和切换功能。该设计体现了继承、接口和多态等面向对象特性,提供了简洁的家电控制解决方案。