zoukankan      html  css  js  c++  java
  • 【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();
    		
    	}
    
    }
    

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

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

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

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

  • 相关阅读:
    Android Studio git 使用
    LInux tty 非阻塞配置以及安全读取数据方法
    Android JNI LOG 打印
    Android APP JNI 编写
    插件地址
    Linux 设置默认路由
    Linux Shell 判断语句
    ORACLE存储过程创建失败,如何查看其原因
    ORACLE时间函数(SYSDATE)深入理解
    JS中,如何判断一个数是不是小数?如果是小数,如何判断它是几位小数 保留n位小数
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860944.html
Copyright © 2011-2022 走看看