//常看到有这样的写法
List<Object> list = new ArrayList<>();
ArrayList实现了List接口,可以说功能比List更多,应该会有自己的一些实现了,为什么还要把对象类型转到List呢?这样不会丢失一些ArrayList自己实现的功能吗?这样写有什么好处啊?
//常看到有这样的写法
List<Object> list = new ArrayList<>();
ArrayList实现了List接口,可以说功能比List更多,应该会有自己的一些实现了,为什么还要把对象类型转到List呢?这样不会丢失一些ArrayList自己实现的功能吗?这样写有什么好处啊?
建议看下设计模式,就明白其中的原理了。
依赖倒置原则
定义:上层模块不应该依赖低层模块的实现,而应该依赖其抽象。
问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。修改类A,会给程序带来不必要的风险。
解决方案:将类A修改为依赖接口I,上层模块无需关心底层模块的接口实现细节。依赖倒置原则的核心就是要我们面向接口编程。
依赖倒置原则需要注意:
1) 低层模块提高的API使用抽象类或接口
2) 变量的声明类型尽量是抽象类或接口