让我们再举一个例子。
那就是java中的jdbc
在这个图中,我们可以看到Driver是一个接口,里面有一些方法(当然只是声明,并没有实现)
image.png
那么,写这个接口有啥用呢???
我们都知道要连接不同的数据库,需要不同的jdbc包,
image.png
上面这些包大家都很熟悉,分别是连接mysql等数据库的包,java 在自己的源代码中 定义了一个接口,里面是一些方法(如connect等),那么不同的厂商(mysql,db2等)都会implements 这些接口,按照自己的数据库 会有不同的实现,但是里面的方法都必须要有。
那么这样有啥用呢?
这样我们编写连接数据库的代码的时候,就不需要担心 各个厂商他们连接数据库 的方法名字(如connect)不同,假如mysql 连接定义成了connect_mysql(),db2的定义成了connect_db2()。 我们在编写代码的时候根本不会关心各个厂商 他们的连接方法名字是什么样,因为 肯定是 connect(java源码中规定的),这样 只需要一个接口,就能规范各个厂商的方法名和方法的参数(api),就是java一声令下,你们各个厂商都要统一一下对外的方法名称,不能一个叫 mysql_connect,一个叫db2_connect,这样的,因为这样会导致 用户在编写java程序时 需要分心来关心你们厂商每个的方法名。
所以,我们可以看出来,定义一个接口,其实是为了规范 业内统一,避免不同厂商 过多的,纷扰的,各不相同,的 API,对用户来说十分不友好。
我们想象一下 如果真的mysql的连接方法变成了mysql_connect(xx, x),而db2的则是db2_connect(xx,xx,x,x),这样 用户仅仅要连接一个数据库,就要去了解 很多厂商的连接方式(这其实就是 厂商对外 的API,之后讲一下API和接口的差别),加大了 用户的学习成本,对java 来说,想要更好管理数据库那一块也变得难了起来。