首页新闻找找看学习计划

这两种声明有什么差别吗?

0
[待解决问题]

HashMap map = new HashMap();

Map map2 = new HashMap();
迟去的夏天的主页 迟去的夏天 | 菜鸟二级 | 园豆:202
提问于:2019-10-18 15:45
< >
分享
所有回答(2)
2

有时候,针对抽象(接口、父类)编程而不是针对具体(接口的实现、子类)编程效果会更好一点,更容易扩展和修改,比如:

Map map = new HashMap();
Do(map)

如果将来随着业务的复杂化,HashMap不能满足需求,需要替换成FuckMap,上面的代码可以改成:

Map map = new FuckMap();。
Do(map)

Do(Map map)方法一点都不需要修改。相反,如果Do方法接收的参数是HashMap,那么就需要重新创建一个方法:Fuck(FuckMap map)

评判一个架构是否灵活的一个标准是:对修改封闭,对扩展开放,问主可以看看设计模式相关的书籍,或者看看这个网站:https://www.oodesign.com/

会长 | 园豆:5259 (大侠五级) | 2019-10-18 17:06
0

HashMap是基于哈希算法的Map接口的实现,Map接口是Java集合框架中的重要接口;
第二个定义是接口变量指向实现类对象,可以实现多态。接口可以多实现

老东家 | 园豆:204 (菜鸟二级) | 2019-10-21 07:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册