该程序为整合final,单例,抽象类,接口,继承,多态的综合项目实例。
一、概念流程
//面向对象实现智能家居系统
//1. 定义设备类,创建设备对象代表家里设备
//2. 准备这些设备对象,放入数组中,代表家庭设备
//3. 为每个设备制订一个开关功能,定义一个接口,让JD实现开关功能
//4. 创建智能设备控制对象,控制全部设备的开和关
//5.提升用户操作。a.展示全部设备情况.b.用户选择操作
二、代码
1.Test类
package com.venturego;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//面向对象实现智能家居系统
//1. 定义设备类,创建设备对象代表家里设备
//2. 准备这些设备对象,放入数组中,代表家庭设备
//3. 为每个设备制订一个开关功能,定义一个接口,让JD实现开关功能
//4. 创建智能设备控制对象,控制全部设备的开和关
//5.提升用户操作。a.展示全部设备情况.b.用户选择操作
System.out.println("欢迎进入智能家居控制系统!");
JD[] jds=new JD[4];
jds[0]=new Lamp("照明灯",true);
jds[1]=new WashMachine("美的洗衣机",false);
jds[2]=new TV("小米电视",false);
jds[3]=new AirCondition("美的空调",false);
//创建智能设备控制对象,控制开关
SmartHomeControl smartHomeControl=SmartHomeControl.getInstance();
//smartHomeControl.control(jds[0]);
//打印全部设备的开和关现状
while (true) {
smartHomeControl.printAllStatus(jds);
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 "exit":
System.out.println("退出APP!");
break;
default:
System.out.println("您输入有误,请重新输入!");
}
}
}
}
2.SmartHomeControl家居控制类
package com.venturego;
//设置单例类
public class SmartHomeControl {
private static final SmartHomeControl instance = new SmartHomeControl();
private SmartHomeControl() {
}
public static SmartHomeControl getInstance() {
return instance;
}
public void control(JD jd) {
jd.press();
System.out.println( jd.getName()+"目前已经"+(jd.isStatus()?"开启!":"关闭!\n"));
}
public void printAllStatus(JD[] jds) {
//使用for循环,根据索引遍历每个设备
for (int i = 0; i < jds.length; i++) {
JD jd = jds[i];
System.out.println((i+1)+","+jd.getName() + "状态目前是:" + (jd.isStatus()?"开启!":"关闭!"));
}
System.out.println("退出请输入exit退出APP!\n");
}
}
3.switch接口
package com.venturego;
public interface Switch {
void press();
}
4.JD家居类
实现类接口switch
package com.venturego;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class JD implements Switch{
private String name;
private boolean status;
@Override
public void press() {
status = !status;
//控制当前设备开和关
}
}
5.四个实例类
全部继承父类JD
//灯
package com.venturego;
public class Lamp extends JD{
public Lamp(String name, boolean status){
super(name, status);
}
}
//洗衣机
package com.venturego;
public class WashMachine extends JD{
public WashMachine(String name, boolean status){
super(name, status);
}
}
//TV类
package com.venturego;
public class TV extends JD{
public TV(String name, boolean status){
super(name, status);
}
}
//空调类
package com.venturego;
public class AirCondition extends JD{
public AirCondition(String name, boolean status){
super(name, status);
}
}
三、运行
全部类与接口
运行结果