欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解释一下,为什么需要接口而不直接实现类。 SpringSSH企业应用IOC编程 

程序员文章站 2022-06-06 16:22:23
...
看了这里的一些帖子和很多地方的帖子,很多人都在问为什么非要interface或者abstract class,然后还要在写一个实现类,而其实,我就市要做一个很简单的功能!?

对,如果你制作一个简单的功能,我同意你可以直接使用spring hibernate等框架来写,他们本身的好处也是干这个的。

但是,中国人有句老话,叫做杞人忧天,很多的时候,你有没有内心问自己,这个系统,我设计的,如果老板要改动,我可以在很短的时间内做到改变么?

当你问自己这个问题的时候,你就已经把直接写实现类的做法怀疑了。

面向接口的原则,不是只出现在程序员或者说IT界,接口设计是人类对一个问题或者一个物体的概括理解能力的表现。我们日常生活中处处有接口。

在我作一个简单的说明之前,我要补充以下,系统框架中,除了层的概念,还有一个叫做boundary,每一个layer(层)是由不同的boundary(box)组成。

举例一二三,比如,简单的说,发电厂就是实现类(implementation class),每个发电厂都是独立的boundary,而发电厂就是统称为一个layer,也许还不明白,比如,我们平时说,发电厂,没人关心你家的电来自于那个发电厂,而关心的是你家的插座有没有电,所以三项插座,二项插座至十发电厂给用户的最终接口。发电厂之间也是通过一个特殊的工业接口来互相访问,所以,这也是为什么说,有时候有的发电厂在夏天负担过重,就可以把负担分给其他的电场供应。反过来,如果让老百姓天天关心的是发电厂,而不是插座,那你觉得这样的城市电力设计是不是很糟糕呢?

在举个例子,比如果.....,嗯,好,就说汽车,汽车都见过吧,四个*,一个方向盘,但是,你们有没有发现,有时候你们的汽车上面的音响系统坏掉或者要升级的时候,只需要取下中间面板上面的那个独立的音响播放器,然后买一个新的,由汽车维修给你们撞上就可以了,不管是飞利浦,boss还是简单的radio的和卡带的,你们从来不会在买一个汽车音响的时候关心他能不能安在汽车上,而是可以完全关心颜色,款式,品牌这些问题上,如果,反过来设计,每一个汽车品牌都直接实现自己的独立设计,不遵循工业接口,那你觉得这样的汽车音响会有很多选择么?

最后在举一个我们每天息息相关的例子,门,每天人们通过不同的门,进入或者走出不同的地方,而门就是那个地方或者建筑物的接口,如果说,我们反过来,每个大厦或者建筑物都直接应用自己喜欢的实现进出的方式,那你们觉得每天的生活会不会有点太麻烦?

我举例子只是来简单的解释一下,接口不是一个繁琐的过程,而是每个工业,甚至是每天生活中,我们必须应用到的东西,所以,如果看待现在的文明社会用程序员的方式的话,那么就是一种接口世界,现实生活中很多人叫做标准或者协议,由看得见摸得找的,也有看不见摸不着的接口。

很多人可能想对我举的例子进行进一步的反驳,其实没有必要,如果你要跟我探讨每一个例子来映射程序中的接口问题,那就是在抬杠,抬杠很浪费时间,所以,我不会跟你探讨例子的问题,那就是个例子,而这个例子是每天确实发生的,使用的。

希望能解释明白一点在程序设计中接口编程的优势所在。