API概念是指应用程序编程接口(Application Programming Interface),是一组规定了软件模块如何互相通信、交换信息的代码接口,提供让第三方开发者访问一个特定软件程序或者Web应用的接口,使得开发人员可以借助这个接口和功能来构建自己的应用程序,而无需了解底层的实现细节。API可以用于不同编程语言之间交互,让不同的程序间进行信息的传输和共享。对于许多互联网公司来说,公开或开放API已经成为获取流量,拓宽生态平台的重要手段。
- 接口的基本概念
接口是抽象方法和全局常量的集合,在 java 中可以使用 interface 关键字定义
interface IMessage (在开发中接口名称前面需要加一个 I)
子类需要用 implements 关键字来实现接口,同时一个子类可以实现多个接口,可以利用接口实现多继承的概念。
class Message implements IMessage,INews{}
一个子类实现了多个接口,对于接口的子类不是抽象类,必须覆写接口中的全部方法。
当一个子类继承了多个接口之后,接口对象通过子类进行实例化,那么多个父接口之间是可以互相转换的,但是是通过子类转换的,实例化的时候要注意 new 后面的实例化,不要盯着名称看。
- 接口的使用限制
接口里面只允许存在 public 权限;
接口中只是抽象方法和全局常量;
在编写的接口时候,开发原则,接口中只提供抽象方法,很少会在接口中看见全局常量,因此接口的方法 public 不会省略,但是 abstract 会省略;
一个子类先使用 extends 继承,再使用 implements 实现接口;
定义抽象类的时候会在抽象类的名称表现出来;
一个抽象类可以使用 implements 实现多个接口,但是接口不能继承抽象类;
一个接口可以使用 inplements 实现多个父接口;
接口可以定义一系列内部结构,包括:内部普通类、内部抽象类、内部接口,使用 static 定义的内部接口相当于外部接口;
- 使用接口定义标准
使用接口和对象对象多态性的结合,对于参数的统一更加明确。
接口是设计在类之上的设计抽象。
正常的开发先设计接口,再设计类。
- 接口工厂设计模式(重点)
java 实现可移植性的关键是 JVM,也就是说所有的程序是在 JVM 上执行,而不同的操作系统中有匹配的 JVM,相当于:
程序 --JVM-- 操作系统。
new 是整个开发过程中最大的耦合元凶,在开发之中解耦合的关键,需要引入一个第三方。
总结:主方法没有变化就实现子类的变更,就是工厂模式;
编写的接口,想取得接口的实例化对象,写工厂类。
- 接口代理设计模式(Proxy)
代理严格来讲就是两个子类共同实现一个接口,一个子类负责真实的业务实现,另一个子类完成辅助业务的主题的操作。
本质:所有真实的业务操作,都会有与之辅助的功能类共同完成。
WeBAPI
Web Api,网络应用程序接口。它包含了广泛的功能,网络应用通过 API 接口,可以实现存储服务、消息服务、计算服务的能力,利用这些能力可以进行开发出强大功能的 web 应用。简单来说,就是一个接口,比如说,我们要做前后端分离的项目,前端和后端通过 url 连接,但是我们如何知道后端的数据是否通了,返回的数据是否正确,于是我们通过这个接口知道。
为什么使用 web API
Web API 最重要的是可以构建面向各种客户端的服务。另外与 WCF REST Service 不同在于,Web API 利用 Http 协议的各个方面来表达服务 (例如 URI/request response header/caching/versioning/content format),因此就省掉很多配置。
当你遇到以下这些情况的时候,就可以考虑使用 Web API 了。
需要 Web Service 但是不需要 SOAP 需要在已有的 WCF 服务基础上建立 non-soap-based http 服务 只想发布一些简单的 Http 服务,不想使用相对复杂的 WCF 配置 发布的服务可能会被带宽受限的设备访问 希望使用开源框架,关键时候可以自己调试或者自定义一下框架 Web API 的主要功能:
-
支持基于 Http verb (GET, POST, PUT, DELETE) 的 CRUD (create, retrieve, update, delete) 操作
通过不同的 http 动作表达不同的含义,这样就不需要暴露多个 API 来支持这些基本操作。
-
请求的回复通过 Http Status Code 表达不同含义,并且客户端可以通过 Accept header 来与服务器协商格式,例如你希望服务器返回 JSON 格式还是 XML 格式。
-
请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。
-
原生支持 OData。
-
支持 Self-host 或者 IIS host。
-
支持大多数 MVC 功能,例如 Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。
在以后的开发设计原则,接口优先:测试链接o0b.cn/izyq