【转载】关于接口的教程

JAVA接口非常详细的教程 类似于硬件接口设计,如计算机母板上的各种接口Java语言中的接口,应用高度抽象概念和编程形式,以及应用时必须完善接口的要求,达到对象通过接口与外部世界的联系。 立即下载

很多初学者都对接口的用处非常疑惑,我也曾经苦思冥想了很久,终于悟出来了。除了要告诉大家接口的知识之外我也想建议大家遇到问题自己多多思考,这样才能比较牢固的掌握,多看看现有的资料,我是通过一些设计模式的资料摸到蛛丝马迹的。

好,言归正传。接口究竟有什么用?他的应用主要是在设计模式领域,当然了,这样说可能有点偏颇,因为接口的作用其实是提供你 在不改动原有代码的基础上 增加、改变类的功能。那么为什么在设计模式里应用广泛呢?因为在面向对象的设计原则中有那么一条开放封闭原则,内容大致如下:一个良好的设计应该可以在不改动原有代码或者改动少数代码的基础上增加或者改变原有的功能。因此接口正好符合这一需求。接下来看一下代码实例你就会明白。以下代码是模仿JDBC的设计原则所写的,并不是原代码,但是设计思想是一致的,之所以选择这样一个例子是因为你可以对接口的应用有一个感性的认识,因为JDBC想必大家都会用到。同时对JDBC的理解也能够深入一点。献丑了:

假设read()方法从数据库里读取一个数据。由于不同数据库的读数据的实现方法各有不同,因此Java如何统一这一差异呢?答案是他提供JDBC接口。JDBC是接口同时也是Java访问数据库的规范,数据库厂商根据这个规范来写符合自己数据库产品的JDBC驱动,在使用JDBC时是不是要加载一个对应数据库的驱动呢,记起来了吧?并且你可以看一下Java的API文档,关于java.sql包里的内容,你看到的多数是什么?多数都是接口(文档里以斜体表示)OK,先给大家建立一个暗示,让大家感觉一下接口和JDBC的暧昧关系,呵呵~
好,实例代码goes here:

interface readData
{
    object read();
}

好,Sun把JDBC里读取数据的接口定义成这样。那么厂商A在自己产品的JDBC驱动里这样实现:

class dbReader implements readData
{
    public object read()
    {
        //与厂商A数据库相关的读取操作实现
    }
}

好了,那么你在你的程序里使用了厂商A的数据库,因此你要用他的JDBC驱动来写程序:

class dbProgram
{
    //加载驱动
    //调用相应的JDBC方法取得connection等必要对象
    object readData=read();//这里的read()方法在JDBC的接口中定义过
}

至此,你完成了对于数据库的读取。到此为止一切顺利。

一天,你的程序由于种种原因要使用厂商B的数据库驱动了(也许是你的客户要求这么做,也许是厂商A倒闭了,他的数据库再也不是主流了)。那么你很幸运,因为你使用Java,你使用JDBC访问数据库。你的代码会如何改动呢?通常如果你的数据库变动的话会造成对代码的巨大变动,但是现在,使用JDBC(注意JDBC是一套接口规范)的话,你只要改变你加载的JDBC驱动就可以了,以下的代码一律不用更改。为什么呢?因为厂商A和B的驱动都符合JDBC规范是吧?因此都实现了readData接口中的read()这个方法对吗?这样虽然你更换了数据库,但是你的程序其实是调用了对应数据库的read()方法,因此你可以不改变读取代码而只是更改要加载的数据库驱动就可以。那么Java又是如何实现动态的调用呢?面向对象的程序中可以这样引用一个实现了某个接口的类的实例:readData rd=new dbReader();//接口名称 变量名=new 实现了接口的类的名称()

调用接口中的方法就可以这样,rd.read()

可以看到,在代码中始终可以用接口类型的变量来引用具体实现他的类。这样的好处是不管类的具体实现怎么变,由于他必须实现接口中定义的方法,所以我们始终可以保证用readData接口类型的变量能够调用到具体实现这个接口的类的read()方法。

上面的例子由于是自己乱编的所以我在以实际的JDBC应用来举个例,希望大家能够彻底的弄懂。
import java.sql.*;
public class first{
public static void main(String args[])
{
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  URL url=" jdbc:odbc:tic ";
  Connection db=DriverManager.getConnection(url,"fisher","yht8125");
  Statement sq_stmt=db.createStatement();
  String sql_str="select * from tic";
  ResultSet rs=sq_stmt.executeQuery(sql_str);
}
在使用JDBC时要指定驱动就是为了能够让JVM用Class.forName来加载对应的驱动,这样就可以保证调用到对应的方法了。Connection和Statement以及ResultSet都是接口,理论上接口里的方法是不能调用的因为都是抽象方法。这里为什么可以呢?因为他们已经引用了一个具体实现他们的类,类里的方法已经是具体的了。这些具体实现的方法就是数据库厂商做的,但是你可以看到无论用什么数据库,调用时的写法都一样,因为方法的名字已经在接口里定义了,这样你的代码就可以不用改变,而实现功能的增加或者替换。

那么我想这其中的奥秘大家应该已经能够体会到了,大家再好好的悟一下吧,相信对接口的用处可以基本了然了,要认识接口的更多应用可以去看设计模式。当然你也可以不局限于模式,接口在你的程序中会发挥更多重要的作用。一般来说如果你的程序中存在变点(在未来功能可能变动的地方)都应该用接口或者是抽象类来实现。这样才能保证以后变动的顺利。

写得不好请大家多多指正!
                                                                                                      

文章出自 编程中国 (http://www.bc-cn.net)  tempnetbar 

[全网最细]接口测试一般怎么测?接口测试的流程和详细步骤 接口测试就是通过接口的不同情况下的输入和与之对用的输出之间的关系,看看是否满足接口规范所规定的**功能性**、**安全性**以及**性能方面**的要求。 简单的说:“接口测试是就是在没有前端页面或者前端还没完成的情况下,代替前端页面或者第三方使用者,来验证后端的接口实现是否符合接口规范。” 阅读详情

相关推荐

很详细接口使用教程(一)

接口是不同系统或组件之间进行通信和数据交换的桥梁。它定义了一组规范和约定,包括输入参数、输出结果、请求方法等,以便于开发者能够按照统一的方式进行调用和集成。

loosenK 853

JAVA基础——接口(全网最详细教程

/接口的定义格式:interface 接口名称{// 抽象方法// 接口的声明:interface// 接口名称:首字母大写,满足“驼峰模式”类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用implements关键字。

weixin_65752158的博客 2385

接口的使用

接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。接口名{//属性//方法(1.抽象方法2默认实现方法3.静态方法)class 类名 implements 接口 { 自己属性;自己方法;必须实现的接口的抽象方法代码演示:注意:在jdk8后,可以有默认实现方法,需要使用default关键字修饰,接口中的方法默认都是抽象方法也就是说,方法不能有具体的实现,如果想要实现方法,那么需要使用default修饰,且jdk版本要在8后。

weixin_53616401的博客 1146

很详细接口使用教程(二)

接口是不同系统或组件之间进行通信和数据交换的桥梁。它定义了一组规范和约定,包括输入参数、输出结果、请求方法等,以便于开发者能够按照统一的方式进行调用和集成。

loosenK 794

Postman接口测试——我看过最详细+全面的文章教程了【转载

Postman接口测试——我看过最详细+全面的文章教程了【转载

software_test010的博客 3万+

转载postman 接口测试使用教程

接口测试就是测试系统组件接口之间的一种测试。1.Chrome应用商店搜索Postman安装。(翻墙)2.客户端安装官网地址:https://www.postman.com/downloads3.Postman的注册和登录创建账户邮箱会收到邮件,进行确认postman登录后界面:我的工作空间:{{$timestamp}} //生成当前时间的时间戳{{$randomin}} //生成0-1000之间的随机数{{$guid}} //生成速记GUID字符串123。

weixin_43844730的博客 256

基于C#的接口基础教程--转载自ASP酷

C#的接口基础教程作者: 黎宇   www.ASPCool.com 第一节 接口慨述        接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。接口可以从多个基接口继承,而类或结构可以实现多个接口接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接

Alex's Blog 1444

转载】全网最全最细的jmeter接口测试教程以及接口测试流程详解

一、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性,可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。 Jmeter具有较高扩展性。 二、Jmeter安装 1、安装JDK,必须JDK1.7以上的版本,推荐1.8的版本 2、进入官网:http://jmeter.apache.org/downloa

Slamdunk_n的博客 993

转载:《TypeScript 中文入门教程》 3、接口

版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本。 介绍 TypeScript的核心原则之一是对值所具有的shape进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。 接口初探 下面通过一个简单示例来观察接口是如何工作的:...

weixin_34227447的博客 115

转载】 vs2005视频教程 之 抽象类和接口 四 [视频]

原帖地址:http://www.cnblogs.com/thcjp/archive/2007/04/20/721587.html首先要感谢 anytao.cnblogs.com ,因为下面总结这部分我是直接粘贴复制他的,呵呵!3.1相同点都不能被直接实例化,都可以通过继承实现其抽象方法。都是面向抽象编程的技术基础,实现了诸多的设计模式。3.2不同点接口支持多继承;抽象类不能实现多继...

dibengpo4955的博客 137

python自动化使用教程_转载:python + requests实现的接口自动化框架详细教程

前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自己写python的接口自动化测试框架,由于本人也是刚学习pytho...

weixin_39771301的博客 260

转载:python + requests实现的接口自动化框架详细教程

转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是ja...

weixin_30478619的博客 106

转载--postman简单教程,使用tests模块来验证接口时是否通过

postman简单教程,使用tests模块来验证接口时是否通过 转自--http://www.cnblogs.com/YouxiYouxi/p/7544914.html 接口测试醉重要的就是返回数据的检查,一个简单的接口,我们可以肉眼检查返回数据,但接口一旦多起来且复杂,每次的检查都会很费劲,此时我们就需要postman 的tests模块来代替 概念: Postman的test本质上是Ja...

花米徐xl_lx的专栏 731

转载】微信公众帐号开发教程第3篇-开发模式启用及接口配置

编辑模式与开发模式 微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在“高级功能”里进行配置,点击“高级功能”,将看到如下界面: 从上图中可以看到,高级功能包含两种模式:编辑模式和开发模式,并且这两种模式是互斥关系,即两种模式不能同时开启。那两种模式有什么区别呢?作为开发人员到底要开启哪一种呢? 编辑模式:主要针对非编程人员及信息发布类公众帐号使用。开启该模式

infi 569

基于C#的接口基础教程

基于C#的接口基础教程   C#中不仅支持.Net 平台,而且支持COM平台。为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性。一个属性实际上就是一个 C# 类,它通过修饰源代码来提供元信息。属性使 C# 能够支持特定的技术,如 COM 和 .Net,而不会干扰语言规范本身。C# 提供将COM接口转换为 C#接口的属性类。另一些属性类将 COM类转换为C# 类。执行这些转换不...

weixin_30654419的博客 283

微信公众帐号开发教程第3篇-开发模式启用及接口配置(转载)

编辑模式与开发模式 微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在“高级功能”里进行配置,点击“高级功能”,将看到如下界面: 从上图中可以看到,高级功能包含两种模式:编辑模式和开发模式,并且这两种模式是互斥关系,即两种模式不能同时开启。那两种模式有什么区别呢?作为开发人员到底要开启哪一种呢? 编辑模式:主要针对非编程人员及信息发布类公众帐号使用。开启该模式

weihuayzh的专栏 453

markdown 简单教程

来了新公司一直没有用规范的接口文档 也很久没写md文档了 手有点生找了个教程mark一下 简书 http://www.jianshu.com/p/1e402922ee32/ 转载于:https://www.cnblogs.com/zeoblog/p/7747748.html...

weixin_33751566的博客 85
上一篇: 人生哲言
下一篇: 成长中必须知道的20个故事
start_java
博客等级 码龄22年 5粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值