API(Application Programming Interface, 应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
抽象类与普通类相比 约定了子类实现要求 单继承局限
因此,提出了接口
在以后的开发设计原则,接口优先
1. 接口的基本概念
接口是抽象方法和全局常量的集合,在 java 中可以使用 interface 关键字定义
interface IMessage (在开发中接口名称前面需要加一个 I)
子类需要用 implements 关键字来实现接口,同时一个子类可以实现多个接口,可以利用接口实现多继承的概念。
class Message implements IMessage,INews{}
一个子类实现了多个接口,对于接口的子类不是抽象类,必须覆写接口中的全部方法。
当一个子类继承了多个接口之后,接口对象通过子类进行实例化,那么多个父接口之间是可以互相转换的,但是是通过子类转换的,实例化的时候要注意 new 后面的实例化,不要盯着名称看。
2. 接口的使用限制
接口里面只允许存在 public 权限;
接口中只是抽象方法和全局常量;
在编写的接口时候,开发原则,接口中只提供抽象方法,很少会在接口中看见全局常量,因此接口的方法 public 不会省略,但是 abstract 会省略;
一个子类先使用 extends 继承,再使用 implements 实现接口;
定义抽象类的时候会在抽象类的名称表现出来;
一个抽象类可以使用 implements 实现多个接口,但是接口不能继承抽象类;
一个接口可以使用 inplements 实现多个父接口;
接口可以定义一系列内部结构,包括:内部普通类、内部抽象类、内部接口,使用 static 定义的内部接口相当于外部接口;
3. 使用接口定义标准
使用接口和对象对象多态性的结合,对于参数的统一更加明确。
接口是设计在类之上的设计抽象。
正常的开发先设计接口,再设计类。
4. 接口工厂设计模式(重点)
java 实现可移植性的关键是 JVM,也就是说所有的程序是在 JVM 上执行,而不同的操作系统中有匹配的 JVM,相当于:
程序 --JVM-- 操作系统。
new 是整个开发过程中最大的耦合元凶,在开发之中解耦合的关键,需要引入一个第三方。
总结:主方法没有变化就实现子类的变更,就是工厂模式;
编写的接口,想取得接口的实例化对象,写工厂类。
5. 接口代理设计模式(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 API 的主要功能:
1. 支持基于 Http verb (GET, POST, PUT, DELETE) 的 CRUD (create, retrieve, update, delete) 操作
通过不同的 http 动作表达不同的含义,这样就不需要暴露多个 API 来支持这些基本操作。
2. 请求的回复通过 Http Status Code 表达不同含义,并且客户端可以通过 Accept header 来与服务器协商格式,例如你希望服务器返回 JSON 格式还是 XML 格式。
3. 请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。
4. 原生支持 OData。
5. 支持 Self-host 或者 IIS host。
6. 支持大多数 MVC 功能,例如 Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。