最近在学Spring boot,以前没有用过Spring和Spring MVC,直接上手写Spring boot,写了一个小项目的增删改查和逻辑判断之类的后,大概知道了怎么样个写法,但是不知道为啥要这么做,什么注解啊,注入啊只是知道这个词。所以想慢慢的开始学一下理论,一点一点的打怪升级。于是就先看看Spring的核心,控制反转,咦,这是个啥子东西,于是打开浏览器,你们懂得,查了一大半个晚上,还是不太懂,隐隐约约的看到要先了解面向接口编程这个东西,那就了解吧,于是打开浏览器,什么是面向接口编程,如何理解面向接口编程,好像搜索的都一样,还是不太理解。在写项目的数据库的时候用到了这个面向接口的做法,就大概把自己的理解总结一下。
我也不知道这样理解对不对,先记录下来!!!
参考网上的文章和实例,我想到了这样一个例子:
不用接口时场景:
某公司老总有一个特殊的爱好,就是爱约美女一起骑马,每次想骑马的时候就拿出手机摇一摇,摇到了三个会骑马的姑娘。如图,然后老板觉得谁更合适就叫出来,用程序实现如下
一共需要五个类,各美女一个类,老板一个类,一个测试类
美女A:小优 类里,用一个方法实现其骑马操作
package com.lee.test; public class A { public void horse() { System.out.println("我是A:小优,会骑马"); } }
美女B:小仓
package com.lee.test; public class B { public void horse() { System.out.println("我是B:小仓,会骑马"); } }
美女C:小麻
package com.lee.test; public class C { public void horse() { System.out.println("我是C:小麻,会骑马"); } }
Boss类: 老板觉得A:小优更好,于是就new一个A对象,然后调用她的骑马方法
package com.lee.test; public class Boss { public void togetherHorse() { A a = new A(); a.horse(); } }
测试类:在main方法里实现老板和美女一起骑马
package com.lee.test; public class Test { public static void main(String[] args) { Boss b = new Boss(); b.togetherHorse(); } }
使用接口实现场景:
老板最近赚大钱了,还请了一个男秘书,于是不再每次自己摇一摇找会骑马的美女,而是交给男秘来安排;男秘想了一个办法,我要让美女主动找上来,会骑马的姑娘请按照我给的表格里详细的介绍自己。老板要去骑马的时候,男秘给安排
表格(接口定的方法)
详细的介绍自己(美女拿到表格后各自去实现这个方法)
男秘给的表格(接口)
package com.lee.interTest; public interface HorseService { void horse(); }
美女A:小优拿到表格后介绍自己(继承接口,并实现其方法)
package com.lee.interTest; public class A implements HorseService{ public void horse() { System.out.println("我是A:小优,身高170,在草原长大,骑马技术很6"); } }
美女B:小仓 拿到表格后介绍自己(继承接口,并实现其方法)
package com.lee.interTest; public class B implements HorseService{ public void horse() { System.out.println("我是B:小仓,幽默,美丽,大方"); } }
美女C:小麻 拿到表格后介绍自己(继承接口,并实现其方法)
package com.lee.interTest; public class C implements HorseService{ public void horse() { System.out.println("我是C:小麻,汉子就是我,我就是汉子,萌萌哒"); } }
Boss:老板通过接口的方式与美女建立某种联系
package com.lee.interTest; public class Boss { public void togetherHorse(HorseService horseService) { horseService.horse(); } }
Test:(老板要去骑马了,秘书安排最合适的A给老板)
package com.lee.interTest; public class Test { public static void main(String[] args) { Boss boss = new Boss(); A a = new A(); boss.togetherHorse(a); } }
上面用到的代码下载地址:https://gitee.com/lemon_le/interface_test