【java基础】接口的理解
接口的定义:
* 我想简述一下什么是接口
* 在我们开发一个传统的应用系统中,会有很多的接口文档。刚开始的时候,我们很纳闷这个接口文档是什么高大上的东西。
* 但是当接触了接口文档之后,我们明白了原来接口就是一个controller里public的方法。宏观上去理解。
* 那就是应用程序对外暴露的接口。对于应用程序来说,这个接口时暴露给用户来使用的,对于用户完全是透明的。
* 时间长了 我们也开始对这个接口 开始侃侃而谈。但是,我看了对柳大对于接口的理解、
* 从更宏观上说,计算机主机的USB接口对用户来说是接口,键盘接口 显示屏接口等等,
* 我们都知道一个软件有系统软件,而软件系统是运行在操作系统之上的,操作系统是建立在一些必要的硬件上基础上的,
* 操作系统为了避免我们直接取修改硬件上的参数,提供了一些API来让我们来去修改设置。二这些设置就是控制面板里那些,
* 其实这些也是操作系统为我们提供的API,只不过是通过系统软件来实现。
* 其次,用户与服务器的交互之间也存在很多接口
* 用户点击了一个输入账号密码的form表单,点击提交 而这个按钮是暴露给用户的接口
* 通过web服务器监听到请求,将请求转换成java识别的参数。获取到参数 将数据转换到service层
* service层对于controller层是一个接口。dao 层对service层是接口。 jdbc的sql对数据库系统软件对java的接口
补充:最近看了一篇关于接口的博客。在看了博主的理解后,我也添加了了自己的一些理解。当然 这写理解都是建立在代码层面上的。
我们假设这样一个场景,那就是假如您是某一家宠物食品店的店主。然后给不同的宠物卖不同的宠物食品。一个忠诚的小狗过来。售卖它狗粮,一只可爱的小猫过来,售卖猫粮。好了,此时你雇佣了一个店员小二。就是这样一个应用场景。
/**
* 宠物食品店
*
* @author jia
*
*/
public interface PetRestaurant {
/**
* 购买
*/
public void buy();
}
/**
* 宠物狗
* @author jia
*
*/
public class DogPet implements PetRestaurant{
@Override
public void buy() {
System.out.println("我是宠物狗,我需要购买狗粮!");
}
}
/**
* 宠物猫
* @author jia
*
*/
public class CatPet implements PetRestaurant{
@Override
public void buy() {
System.out.println("我是宠物猫,我要购买猫粮!");
}
}
/**
* 店员小二
* @author jia
*
*/
public class XiaoEr implements PetRestaurant{
private PetRestaurant petRestaurant;
public XiaoEr(PetRestaurant petRestaurant) {
this.petRestaurant = petRestaurant;
}
@Override
public void buy() {
petRestaurant.buy();
}
}
/**
* 测试类
* @author jia
*
*/
public class TestPet {
/**
*
* @param args
*/
public static void main(String[] args) {
DogPet dogPet = new DogPet();//创建一个宠物狗
CatPet catPet = new CatPet();//创建一个宠物猫
XiaoEr xiaoEr = new XiaoEr(dogPet);//店员小二 实例化
xiaoEr.buy();
XiaoEr xiaoEr2 = new XiaoEr(catPet);//店员小二 实例化
catPet.buy();
}
}
这样执行之后,出现的结果就是宠物狗知道自己购买的什么宠物食品。宠物猫也是一样的、
我是宠物狗,我需要购买狗粮!
我是宠物猫,我要购买猫粮!
这样执行的结果,利用接口,程序就能耦合度更低。
希望对您有帮助,如果有什么不争取的希望指正。谢谢。