码迷,mamicode.com
首页 > 其他好文 > 详细

List集合与面向接口

时间:2015-06-02 01:38:47      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

以前基础学不太好,比如说使用List集合 List<String>list = new ArrayList(String); 以为只有这一种调用的方法,list集合诞生出来就是这样调用的,就像是人诞生出来就有一个头,两只手,两只脚,最近发现 ArrayList list = new ArrayList(String);也可以调用到list的方法,打破了我那种观念,一定要知道这是为什么,于是查了一些资料:

List接口继承了Collection接口,ArrayList类实现了List接口。

一般去使用 List<String>list = new ArrayList(String) 而不是ArrayList list = new ArrayList(String)

是因为前者是“面向接口编程”,前者只能使用List接口里面声明的方法,后者可以使用除了接口以外的方法。

设计模式中有:“代码尽量依赖于抽象,不依赖于具体”。第二种形式就是依赖具体,第一种形式就是依赖于抽象。

List的实现类不止ArrayList一种,还有LinkedListRoleListVector等等。比如说你想换用RoleList的时候,使用第一种形式的话 List<String>list = new RoleList(String),改掉后面半部分就行了,后面的代码不需要修改,因为List接口保证了调用的都是接口中声明的方法,如果使用第二种形式的话就麻烦一点了,RoleList rl = new RoleList(String),因为不能保证rl调用的就是List接口中的方法,可能要改好多代码。

接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则,如果程序能按照这个规则就不容易出错了。就像人类社会定制的各种规则(法律,校规等)一样,可以预防犯错,还能提高效率

实际上这样做,在 Java 中还有很多,像 JDBC 中的 Connection、PreparedStatment、ResultSet 等等,这些都是接口,如果不去研究 JDBC驱提供的源代码,根本就不会知道其具体的实现类是哪一个,对于开发人员来说,只要知道这些接口中的方法,以及该如何使用这些方法就足够了,不需要去考虑底层的实现,正因为此,换一种数据库只要更改其连接驱动和连接字符串就够了,其他的根本用不着改。

 

List集合与面向接口

标签:

原文地址:http://www.cnblogs.com/sflik/p/4545343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!