揭秘什么是面向接口编程

简介:   答案是肯定的,接口的出现很好的解决了这一问题,我们向电脑配件生产商提供了一套规范 名叫USB,告诉他们以后再生产任何的设备都要留出USB形状的对接口,那么我们的电脑只需要留出一个USB形状的对接口,用来连接任何具有该形状对接口的设备即可,改进代码如下:

  先用一个案例来给大家说明一下面向接口编程。

  案例:有一个电脑类(Computer),电脑除了有基本的开机关机功能外,还有连接任何外接设备的功能,比如能电脑能连接外置键盘(Keyboard),鼠标(Mouse),投影仪(Projecter)等很多外置设备,请用代码来实现该需求;

  实现步骤如下:

  首先需要创建三个类Keyboard,Mouse,Projecter即键盘、鼠标、投影仪类,并且都有自己的功能

  其次需要创建一个Computer类,类里面有开机(openComputer)方法,也有关机(closeComputer)方法,而且还有三个接收外置设备的方法connectKeyboard,connectMouse,connectProjecter,代码如下:

  // 键盘类public class Keyboard { public void work(){ System.out.println("外置键盘可以用来输入数据"); }} // 鼠标类public class Mouse{ public void work(){ System.out.println("鼠标方便操作人员打开一些程序"); }} // 投影仪类public class Projecter{ public void work(){ System.out.println("投影仪把屏幕投影到墙上放大"); }} // 定义笔记本类 // 功能: 开机,关机,接收外置设备 键盘 鼠标 投影仪 并让其工作public class Computer { //开机 public void openComputer(){ System.out.println("笔记本开机"); } //关机 public void closeComputer(){ System.out.println("笔记本关机"); } //连接外置键盘 并让其输入 public void connectKeyboard(Keyboard k){ k.work(); } //连接鼠标 并让其点击 public void connectMouse(Mouse m){ m.work(); } //连接投影仪 并让其投影 public void connectProjecter(Projecter p){ p.work(); }}

  现在这个需求我们就已经做完了。但是假如此时一些电脑配件的生产商又生产出了一种新设备“U盘”用来做外置存储的,那么这时候我们除了需要再写一个U盘类之外,还需要在Computer类中加一个连接U盘的方法(这体现在现实生活中就是把原来已经制作好的电脑解体重新改装出一个用来连接U盘的口子),二手设备网增加的代码如下:

  // U盘类public class UDisk{ public void work(){ System.out.println("U盘可以用来存储数据"); }} // 定义笔记本类 // 功能: 开机,关机,接收外置设备 键盘 鼠标 投影仪 并让其工作public class Computer { //开机 public void openComputer(){ System.out.println("笔记本开机"); } //关机 public void closeComputer(){ System.out.println("笔记本关机"); } //连接外置键盘 并让其输入 public void connectKeyboard(Keyboard k){ k.work(); } //连接鼠标 并让其点击 public void connectMouse(Mouse m){ m.work(); } //连接投影仪 并让其投影 public void connectProjecter(Projecter p){ p.work(); } //连接U盘 并让其存储 public void connectUDisk(UDisk u){ u.work(); }}

  对于U盘新设备,我们经过改装电脑,可以让电脑连接使用了。但是可恨的是 就在此时,电脑配件的生产商又生产出了外置音响,我们快要疯了,因为我们不得不又要把电脑拆了,重新改装出一个连接外置音响的口子。这时候我们并没有着急去改装自己的电脑,因为万一自己改装完了之后 电脑配件生产商又生产出了其他的外置设备呢?难道我们就一直改装下去吗?那究竟有没有一种解决办法呢??

  答案是肯定的,接口的出现很好的解决了这一问题,我们向电脑配件生产商提供了一套规范 名叫USB,告诉他们以后再生产任何的设备都要留出USB形状的对接口,那么我们的电脑只需要留出一个USB形状的对接口,用来连接任何具有该形状对接口的设备即可,改进代码如下:

  // 定义笔记本类// 功能: 开机,关机,接收任何USB设备public class Computer { //开机 public void openComputer(){ System.out.println("笔记本开机"); } //关机 public void closeComputer(){ System.out.println("笔记本关机"); } //连接USB设备 并让其进行相应的工作 public void connectUSB(USB device){ //父接口的引用可以接收任何的子类对象,多态! device.work(); //此处运行的是子类的重写后的work方法 }} // 自定义的USB接口 // 规范 USB设备能运行并完成相应的功能public interface USB { public abstract void work();} // 键盘类public class Keyboard implements USB{ public void work(){ System.out.println("外置键盘可以用来输入数据"); }} // 鼠标类public class Mouse implements USB{ public void work(){ System.out.println("鼠标方便操作人员打开一些程序"); }}

  经过这样的设计,我们的电脑只要留出用来连接USB设备的对接口就可以了,不管生产商们生产任何的外接设备,只要他们按照USB接口规范来,他们都能够接入到电脑上去,这样就极大的增强了电脑的拓展性,以及设备的可维护性。

  ? 经过这个案例,大家应该明白面向接口编程给我们带来的便利了吧。面向接口编程就是增强了代码的拓展性,而接口就是体现的一种规范,也是提现的一种拓展思想。

目录
相关文章
|
Java API 微服务
【Spring Boot系列】通过OpenAPI规范构建微服务服务接口
【4月更文挑战第5天】通过OpenAPI接口构建Spring Boot服务RestAPI接口
457 0
|
存储 缓存 安全
API接口设计规范
这个是目前第三方数据接口交互过程中常用的一些参数与使用示例,希望对大家有点帮助。 当然如果为了保证更加的安全,可以加上RSA,RSA2,AES等等加密方式,保证了数据的更加的安全,但是唯一的缺点是加密与解密比较耗费CPU的资源.
|
1月前
|
JSON fastjson Java
FastJson 完全学习指南(初学者从零入门)
摘要:本文是FastJson的入门学习指南,主要内容包括: JSON基础:介绍JSON格式特点、键值对规则、数组和对象格式,以及嵌套结构的访问方式。FastJson是阿里巴巴开源的高性能JSON解析库,具有速度快、功能全、使用简单等优势,并介绍如何引入依赖,如何替换Springboot默认的JackJson。 核心API: 序列化:将Java对象转换为JSON字符串,演示对象、List和Map的序列化方法; 反序列化:将JSON字符串转回Java对象,展示基本对象转换方法;
|
机器学习/深度学习 人工智能 算法
从申请到调用:全国快递物流查询 API 使用教程
面对越来越多的快递需求和快递公司的日益增多,手动查询快递状态的工作变得愈发繁琐。此时,一个全国快递物流查询 API 的出现能够极大地提高查询的效率和准确性,解决人工查询的问题,为用户提供更加便捷的服务体验。全国快递物流查询 API 可以通过接口自动查询快递状态并返回相应信息,同时还支持自动识别快递公司,方便用户快速查询到自己的快递信息。
2302 0
|
5月前
|
监控 安全 API
电商系统数据同步——电商API接口篇
电商系统中,数据同步是保障业务高效运转与优化用户体验的核心环节,而API接口作为关键技术起着至关重要的作用。本文从API基础解析、应用场景(如商品信息、订单、库存、支付与物流同步)、技术实现路径、挑战与应对策略及最佳实践等方面深入剖析电商API接口在数据同步中的作用,并通过亚马逊、阿里巴巴等实战案例展示其应用价值。
|
9月前
|
存储 缓存 API
电商行业中 API 接口的常见问题和解决方法
本文探讨了电商行业中API接口的常见问题及解决方法。涵盖数据准确性(如数据不一致、数据缺失)、性能问题(如响应时间过长、吞吐量不足)、安全问题(如身份认证与授权、数据泄露风险)和兼容性问题(如接口版本兼容性、系统兼容性)。通过优化数据同步机制、缓存策略、网络配置、服务器负载均衡、代码逻辑,以及采用安全的身份认证方式和加密技术,结合实际代码示例,帮助开发者提升API接口的稳定性和安全性,确保电商业务顺利运行。
400 11
|
12月前
|
监控 安全 物联网
物联网:如何对接物联网卡的管理平台
对接物联网平台的API通常涉及几个关键步骤,这些步骤帮助你有效地与平台交互,实现设备数据的收集、处理、分析及控制等功能。以下是一个通用的对接流程:
|
API Java 监控
SpringBoot基于OpenAPI3的接口文档管理快速集成和使用
本文主要简单介绍SpringCloud2023中进行接口文档管理,方便前后端开发和文档维护。文档管理工具基于开源的knife4j封装的openapi3。
738 3
|
网络协议 Unix Shell
Docker基本教程
这篇文章是关于Docker的入门教程,介绍了Docker的基本命令和操作,包括镜像搜索、拉取、列出、删除,容器的运行、进入、退出、查看状态、停止、重启和删除,以及权限问题的解决方法。
272 2
|
机器学习/深度学习 安全 测试技术
API 接口测试的发展前景展望
在数字化时代,API已成为软件系统集成的核心。随着微服务架构普及与分布式系统增多,API数量激增,对接口测试需求大幅提升。智能化测试借助AI技术提高效率与质量,并降低成本。新技术如容器化和服务化架构催生新型API,推动测试方法不断创新。行业数字化转型与云服务发展进一步强调API测试重要性,开放API生态建设亦依赖严格测试确保安全与正确性。面对网络安全威胁,API安全测试愈发关键。尽管多协议并存和技术挑战带来复杂性,高端测试人才短缺,但API测试前景广阔,将持续发挥关键作用并适应新需求。