A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jsjchenlong 中级黑马   /  2014-5-26 16:59  /  1172 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

面向接口编程的好处都有什么呀
举个例子说:
Map<String, String> map = new HashMap<String, String>();(多态形式,这是面向接口的编程)和
HashMap<String, String> hmap = HashMap<String, String>()(直接new);
张老师的视频里只是提到了面向接口的编程好,但是我不知道,好在哪里,想向各位高手请教一下。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
接口的作用:
* 1:可以使项目分层,所有层都面向接口开发,开发效率提高
* 2:接口可以使代码之间耦合度降低,可以随意的切换
* 3:接口和抽象类都能完成某个功能,优先使用接口,因为接口可以多实现,多继承
* 并且一个类除了实现接口之外还可以去继承其他类(保留了类继承)
希望对你有所帮助....

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
呵呵,像J2EE中的API规范基本上都是接口,由各应用服务器来实现,比如:WebSphere按照这个接口实现自己的,WebLogic也按照这个接口实现自己的,作为开发者来说我们根本就不用去管谁是怎样实现的,只要按照J2EE的API
来写就可以了,根本用不着导入它们的实现包,实际上具体的是由它们自身完成了。

接口说白了,也就是定死了一个框,具体的是糊红纸还是糊黑纸我们都用不着去管的,我们只要知道它是个框,提供
了哪些方法就够了。

举个简单的JDBC的例子吧,比如有个BaseDao接口,现在有MySQLDao实现了一个(我们可以把具体的实现类配在配置
文件中,再通过反射进行实例化),也就类似这样的:

BaseDao dao = (BaseDao)(Class.forName(Config.getDaoName()).newInstance());

其中Config.getDaoName()可以获得配置文件中的配置,比如是:com.bao.dao.impl.MySQLDao。

之后,那些人开始要烧钱了,要改用Oracle了,这样我们只要按BaseDao的定义,再实现一个OracleDao就可以了,
再将配置文件中的配置改为:com.bao.dao.impl.OralceDao就可以了,而在已经写好的代码中,我们可以一行不
改的进行了数据库移植,这个就是面向对象设计原则中的“开-闭原则”(对增加是开放的,对修改是封闭的)。但
这只是理论上的,现实中很难做到的。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
用接口,和继承,包括以后学的框架,所有的目的只有一个,高内聚低耦合
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马