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

被折叠的 条评论
为什么被折叠?



