课时88:使用接口定义标准

简介: 课时88介绍了接口在编程中的重要性及其与标准的关系。通过USB接口的例子,解释了接口如何定义标准并确保不同设备间的兼容性。课程还展示了如何在Java中使用接口(如IUSB)来规范设备的接入和工作流程,确保只要符合接口标准的设备都能被正确识别和使用。此外,课程强调了标准在开发中的核心作用,即先定义标准再进行具体实现,以保证系统的稳定性和扩展性。

课时88:使用接口定义标准

 

摘要:

1. 接口与标准的关系

2. 接口在程序中的作用

3. 标准的概念

 

01. 接口与标准的关系

 

对于接口而言在开发之中最为重要的应用就是进行标准的制定,实际上在日常的生活之中也会听见许多关于接口的名词,如:USB接口、PCI接口、鼠标接口等等,那么这些实际上都是属于标准的应用。


以USB的程序为例,电脑上可以插入各种USB的设备,所以电脑上认的只是USB标准,而不关心这个标准的具体实现类。也就是说,不管接口后面连接的是U盘、键盘还是打印机,只要符合USB标准,电脑都能接纳它。

image.png

USB对应的设备有很多,像常见的U盘、键盘、打印机外,还有无数其他符合USB标准的设备。但对于电脑来说,它并不关心这些设备具体是什么,它只关注一点:这些设备有没有实现USB接口的标准。只要实现了,哪怕有几千几万个设备,电脑都能正常支持接入。

 

02. 接口在程序中的作用

 

在实际开发中,我们要先定义标准,而不是先应用标准再生产设备。

代码实现:

interface IUSB {     // 定义USB标准
    public boolean check();     // 检查通过可以工作
    public void work();
}
class Computer {
    public void plugin(IUSB usb) {
        if (usb.check()) {
            usb.work();     // 开始工作
        } 
    }
}
class Keyboard implements IUSB {
    public boolean check() {
        return true;
    }
    public void work() {
        System.out.println("开始进行码字任务。");
    }
}
class Print implements IUSB {
    public boolean check() {
        return false;
    }
    public void work() {
        System.out.println("开始进行照片打印。");
    }
}
 
public class JavaDemo {
    public static void main(String args[]) {
        Computer computer = new Computer();
        computer.plugin(new Keyboard());     // 插入键盘
        computer.plugin(new Print());     //插入打印机
    }
}

代码运行,返回:

image.png

 

interface IUSB {     // 定义USB标准
    public boolean check();     // 检查通过可以工作
    public void work();
}
class Computer {
    public void plugin(IUSB usb) {
        if (usb.check()) {
            usb.work();     // 开始工作
        } else {
           System.out.println(“ 硬件设备安装出现了问题,无法使用!”)
}
    }
}
class Keyboard implements IUSB {
    public boolean check() {
        return true;
    }
    public void work() {
        System.out.println("开始进行码字任务。");
    }
}
class Print implements IUSB {
    public boolean check() {
        return false;
    }
    public void work() {
        System.out.println("开始进行照片打印。");
    }
}
 
public class JavaDemo {
    public static void main(String args[]) {
        Computer computer = new Computer();
        computer.plugin(new Keyboard());     // 插入键盘
        computer.plugin(new Print());     //插入打印机
    }
}

代码运行,返回:

image.png

 

03. 标准的概念

 

image.png

在现实的开发之中,对于标准的概念无处不在。就以吃东西为例:我们对于能吃的东西有一个潜在标准。当有人给你辣条、橘子,很多人可能会欣然接受,因为它们符合我们对可食用食物的标准。


但是如果给你一只死青蛙,相信大家可能都会拒绝,因为这不符合我们吃食物的标准。再比如小龙虾,对于很多人来说,它是美味佳肴,符合食用标准。


又比如高速路上,规定不允许非机动车以及设计时速低于70迈的车行驶。我们正常人步行时速大概只有五迈左右,所以肯定不能在高速路上行走,这就是交通规则中的标准限制。


在开发中,标准同样起着关键作用。不同类型之间的交互靠的是接口的标准。就像人是一种类型,零食是一种类型,在判断是否符合能“使用”(这里可以理解为是否能吃)时,不单纯看它们的类型,而是看是否符合标准。只要符合标准,就能正常使用,这就是标准的概念。

相关文章
|
存储 SQL JSON
Spark - 一文搞懂 parquet
parquet 文件常见于 Spark、Hive、Streamin、MapReduce 等大数据场景,通过列式存储和元数据存储的方式实现了高效的数据存储与检索,下面主要讲parquet 文件在 spark 场景下的存储,读取与使用中可能遇到的坑。......
2761 0
Spark - 一文搞懂 parquet
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
1028 0
|
物联网
阿里云物联网平台一型一密获取:DeviceSecret 示例
一型一密安全认证方式下,同一产品下所有设备可以烧录相同固件(即烧录ProductKey和ProductSecret)。设备发送激活请求时,物联网平台进行身份确认,认证通过,下发该设备对应的DeviceSecret。本文主要演示如何使用JAVA SDK动态获取DeviceSecret。
9026 0
|
Java 应用服务中间件 持续交付
SpringBoot采用Java配置类的方式配置Nacos,动态注册微服务IP
本文是采用Java配置类的方式配置微服务的Nacos服务注册,并动态的配置spring.cloud.discovery.ip属性以打到微服务内网穿透注册至Nacos注册中心。
5146 0
SpringBoot采用Java配置类的方式配置Nacos,动态注册微服务IP
|
11月前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品价格预测的深度学习模型
使用Python实现智能食品价格预测的深度学习模型
298 6
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
2193 0
|
前端开发 Java 应用服务中间件
JVM进阶调优系列(1)类加载器原理一文讲透
本文详细介绍了JVM类加载机制。首先解释了类加载器的概念及其工作原理,接着阐述了四种类型的类加载器:启动类加载器、扩展类加载器、应用类加载器及用户自定义类加载器。文中重点讲解了双亲委派机制,包括其优点和缺点,并探讨了打破这一机制的方法。最后,通过Tomcat的实际应用示例,展示了如何通过自定义类加载器打破双亲委派机制,实现应用间的隔离。
|
11月前
|
UED 异构计算
overflow 属性法的缺点
【10月更文挑战第27天】虽然`overflow`属性法是一种简单有效的解决浮动布局高度塌陷问题的方法,但在使用时需要充分考虑到其可能带来的各种缺点,并根据具体的页面布局需求和设计要求,谨慎地选择和使用,以避免对页面的显示效果、用户体验和性能表现产生不良影响。
|
存储 Prometheus 监控
Prometheus 存储方案与优化
【8月更文第29天】Prometheus 是一个流行的开源监控系统,它使用时间序列数据库来存储监控数据。Prometheus 的时间序列数据库是基于本地文件系统的,这种设计提供了高吞吐量的读写能力,但同时也带来了存储方面的挑战。本文将详细介绍 Prometheus 存储的工作原理,并提出一些优化策略以减少磁盘占用。
1166 1
|
NoSQL 关系型数据库 MySQL
阿里云服务器部署项目流程
本文主要讲解阿里云服务器的部署,如何选择配置等