【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();
		
	}

}

  这样执行之后,出现的结果就是宠物狗知道自己购买的什么宠物食品。宠物猫也是一样的、

我是宠物狗,我需要购买狗粮!
我是宠物猫,我要购买猫粮!

这样执行的结果,利用接口,程序就能耦合度更低。

希望对您有帮助,如果有什么不争取的希望指正。谢谢。

原文地址:https://www.cnblogs.com/qxlxi/p/12860944.html