首页 新闻 会员 周边 捐助

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

0
[待解决问题]

HashMap map = new HashMap();

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

会长 | 园豆:12463 (专家六级) | 2019-10-18 17:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册