如: Set set = new HashSet(); 或者 List list = new ArrayList();
我始终不能完全理解为什么要这样来定义,为什么不直接: HashSet set = new HashSet(); 或者 ArrayList list = new ArrayList();
他们个根本区别是什么,另外Set set = new HashSet();的真正用意和用途是什么???
------解决方案-------------------- 容易扩展和修改。 List list = new ArrayList(); 后面对list的使用不用去关注list内部到底是使用何种具体类型实现的,这样,当你需要修改list的具体类型时,比较容易修改,影响的代码很少。 比如,你希望list采用LinkedList来实现,只需要修改一句话 List list = new LinkedList(); 后面使用list的代码不受影响。
------解决方案-------------------- 面向接口编程,方便扩展
------解决方案-------------------- 写代码尽量基于抽象而不是基于实现,接口编程的最大好处就是将服务的提供者和服务的使用者分开,这样服务的使用者是关心标准而不用关心具体的实现,以后如果服务的实现变了,而上层应用代码不需要做任何改变,从而降低系统耦合。
------解决方案--------------------