先mark一下:http://c.biancheng.net/view/1338.html
代码尽量依赖于抽象,不依赖于具体。
使用接口中的方法,使得在修改方便替换。
例:List<> list = new ArrayList<>();
代码编写后发现集合使用的不准确,应该使用LinkedList,那么只要修改一行代码List list = new LinkedList();就可以,这行以后的代码不需要修改,因为List接口保证了调用的都是接口中的方法,而ArrayList与LinkedList都实现了List接口。而如果当时用ArrayList list = new ArrayList()这种形式的话,那么list访问到的就可能是ArrayList里独有的方法而非List接口中的方法。这样替换成LinkedList的时候就有可能需要修改很多的代码。