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)
代理严格来讲就是两个子类共同实现一个接口,一个子类负责真实的业务实现,另一个子类完成辅助业务的主题的操作。
本质:所有真实的业务操作,都会有与之辅助的功能类共同完成。
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的主要功能:
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。