当前位置: 首页 > news >正文

接口基础-智能家居控制系统

目录

案例要求

实现思路

代码

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简化代码,实现了设备状态的实时显示和切换功能。该设计体现了继承、接口和多态等面向对象特性,提供了简洁的家电控制解决方案。

http://www.dtcms.com/a/307403.html

相关文章:

  • 家政小程序系统开发:满足多元家政需求
  • AI 类型的 IDE
  • 直播小程序 app 系统架构分析
  • FastMCP本地构建Server和Clinet交互
  • PyTorch深度学习快速入门学习总结(三)
  • selenium+pyautogui实现页面鼠标自动化控制
  • 学习Python中Selenium模块的基本用法(4:WebDriver常用属性及函数)
  • RabbitMQ的特点和消息可靠性保障
  • RabbitMQ 队列配置设置 RabbitMQ 消息监听器的并发消费者数量java
  • [Linux入门] Linux防火墙技术入门
  • rabbitmq的安装和使用-windows版本
  • 远程仓库地址发生变化
  • RabbitMQ安装与介绍
  • 推客小程序商业模型设计:合规分佣体系×盈利模式×LTV提升策略
  • Cesium 快速入门(七)材质详解
  • 一键打包所有docker镜像的脚本
  • 暑期算法训练.11
  • 【09】大恒相机SDK C#开发 ——库函数 IntPtr ConvertToRGB24详细解释 及 示例
  • 【Linux系统】库的制作与原理
  • 007TG洞察:波场TRON上市观察,Web3流量工具的技术解析与应用
  • 【Linux系列】SSD 与 HDD
  • 学习日志23 python
  • 深度理解 linux 系统内存分配
  • 用 AI 解析采购订单,从上传到自动生成 Draft 订单全流程实战
  • 多种录音笔录音芯片方案推荐
  • 《Java 程序设计》第 17 章 - 并发编程基础
  • MBR与GPT分区表深度解析:硬盘分区该怎么选?
  • CPP学习之继承
  • 《Java 程序设计》第 18 章 - Java 网络编程
  • 常见的中间件漏洞