理解Spring面向接口编程思想
我们都知道java是面向对象的语言;
一个人是一个对象一个物品也是一个对象;
在刚刚接触Spring的时候只知道用Spring来管理咱们的一个个对象,一直知道Spring 提倡的面向接口的编程方式,经过很久的使用,终于能一窥其中的奥秘;
首先来看
假设一个中国人那么他有eat() 方法也有say()方法
一个日本人那么他也有eat()方法 也有say()方法
如果刚开始没发现有日本人,那么肯定只会写一个中国的方法;
public static void ChinaPesonImpinit(ApplicationContext context)
{ChinaPesonImp ChinaPesonImp = context.getBean(ChinaPesonImp.class);ChinaPesonImp.eat();ChinaPesonImp.Say();
}
程序运行也是很OK;
有天发现有日本人了,那么突然发现中国人的方法不能用了要重新写一个日本人的方法
public static void JapanPesonImpinit(ApplicationContext context)
{JapanPesonImp JapanPesonImp = context.getBean(JapanPesonImp.class);JapanPesonImp.eat();JapanPesonImp.Say();
}
那么以此类推美国人 英国人。...好多方法 来一个人就要增加一个方法
那么Spring 如何解决的呢?
首先既然他们都有相同的方法那么新建一个接口PersonInterface
public interface PersonDao {public String Say();public String eat();}
那么理所当然ChinaPesonImp 需要实现这个接口
@Component
public class ChinaPesonImp implements PersonInterface {@Resource(name="PersonServiceimp")com.xj.Interface.PesonServiceInterface PesonServiceInterface;@Overridepublic void Say() {System.out.println(PesonServiceInterface.Say());}@Overridepublic void eat() {System.out.println(PesonServiceInterface.eat());}}那么理所当然JapanPesonImp也需要实现这个接口@Component
public class JapanPesonImp implements PersonInterface {@Resource(name="PersonServiceimpto")com.xj.Interface.PesonServiceInterface PesonServiceInterface;@Overridepublic void Say() {System.out.println(PesonServiceInterface.Say());}@Overridepublic void eat() {System.out.println(PesonServiceInterface.eat());}}
那么现在我们可以不关注是哪国人来了,只要你实现了接口我们认为你就是人咱一个方法就搞定了;
public static void init(ApplicationContext context,Class classname){@SuppressWarnings("unchecked")PersonInterface PersonInterface = context.getBean(classname);PersonInterface.eat();PersonInterface.Say();}
那么这个时候新来的英国人怎么办;
那就实现PersonInterface接口, 再将这个实现的实例传入Init方法中一个方法就搞定了;
public static void main( String[] args ){ApplicationContext context = new AnnotationConfigApplicationContext(SpringRunStartConfig.class);init(context,ChinaPesonImp.class);init(context,JapanPesonImp.class);}
其实在现实生活中假设你要跟某个公司沟通一个具体的工作事项,你想想你先找谁?
正常的流程;对面公司的对接人(接口),对接人将具体负责这块的人(接口实现类)的结果,然后反馈给你;
那么以后有问题你就找对接人,不需要找负责这块的某个人员。
那么这个人以后离职或者不上班你都不用管,由对接人全权负责。
------------------------------------------------------
如果你直接找对方接口人负责人就会发生不可控因素;
1、今天是他明天可能是她;傻傻你分不清楚
2、你今天依赖他,明天他走了你又要依赖别人。好费心
理解Spring面向接口编程思想相关推荐
- 细说Mybatis一级缓存、二级缓存以及mybatis获取mapper的面向接口编程思想(Mapper接口动态代理实现原理)(二)
上一章和大家分享了Mybatis一级缓存和二级缓存,本章将继续和大家分享Mapper接口动态代理实现原理,按照国际惯例,先看源码,然后结合原理,写一个自己的小demo,从理论到实战,真正掌握面向接口编 ...
- 透彻理解Spring事务设计思想之手写实现
2019独角兽企业重金招聘Python工程师标准>>> 前言 事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原 ...
- 【手写系列】透彻理解Spring事务设计思想之手写实现
事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Dura ...
- spring 面向接口编程_Spring面向方面的编程
spring 面向接口编程 介绍 在理想的面向对象系统中,我们希望将每个对象设计为执行一项特定任务. 但是,除了执行其主要任务之外,对象还执行被动任务,例如日志记录,事务,安全性,缓存等.这些被动活动 ...
- 彦舜原创,CSDN首发:面向接口编程思想,设计程序
/*** 彦舜原创,CSDN首发*/ package cn.yanshun.design;/*** @author 彦舜**/ public class Test3_Design {/*** */pu ...
- php面向接口编程思想,面向接口编程 - Laravel 实践
面向接口编程是编码中的一种设计思想,这种方式基于接口而不是固定的类来构建应用程序. 如果您是一名程序员,那么您可能听说过则这样的说法,例如:面向接口编程.使用抽象类代替固定类等等. 这些都是说的同一件 ...
- 如何能理解 Spring 框架的思想?
Spring 简述 1.1 什么是 Spring ? Spring 是一个轻量级的开源的 JavaEE 框架,由作者 Rod Johnson 创建,兴起于 2003 年.目的是为了解决企业级开发的复杂 ...
- 面向接口编程详解(一)——思想基础
我想,对于各位使用面向对象编程语言的程序员来说,"接口"这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为 ...
- 面向接口编程详解(一)—— 思想基础
我想,对于各位使用面向对象编程语言的程序员来说,"接口"这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为 ...
最新文章
- 小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码)
- oracle profile
- MATLAB和Python读取wave文件的波形对比
- 关联、聚合、组合的关系[转]
- C/C++基本数据类型所占字节数
- java gdal postgresql_使用GDAL/OGR操作Postgresql数据库
- 基于java SSM springboot动物检疫信息管理系统设计和实现
- THD 变量存入threads中
- 图像转svg,及绘制svg图像
- 团队作业个人博客07
- 教你用手机制作二寸证件照,操作简单,一学就会!
- 如何将wav转为mp3格式,wav中间mp3步骤
- 用 Python 进行 OCR 图像识别
- TOM邮箱6.0版新功能体验—全新的交互设计
- html图片边框的颜色,css图片的边框怎么设置颜色?
- 利用excel搭建动态图表
- 微信公众平台开通业务域名
- 页面html背景图片居中显示文字,DIV+CSS中让布局、背景图片、文字内容居中的方法...
- 四阶魔方玩法总结V1.0
- ppt转为6页pdf讲义