从List list=new ArrayList()看面向接口编程的重要性

来源:互联网 发布:加工中心键槽怎么编程 编辑:程序博客网 时间:2024/06/03 22:00

作者:罗代均,ldj_work#126.com ,转载请保持完整性.

先看一段程序

1.现有一个支付账款的类Payment,有一个批量支付的方法

  public void pay(List list){

      //遍历List,进行支付

 }

2.编写客户端程序,

public static void main(String[] args){

      Payment payment=new Payment();

     List list= new ArrayList();

    list.add(...);

    list.add(...); //添加帐号,

     .....

    payment.pay(list);

}


ok,现在由于ArrayList没有线程同步
我想改为Vector代替
只需要修改客户端程序的一句话: List list = new Vector();

而包含业务逻辑的Payment类,不需要做任何变化。

 

如果你用ArrayList list=new ArrayList()的话,

pay()方法为: pay(ArrayList list);

改为Vector后,pay也必须改为 pay(Vector v);

客户端,Payment的pay()方法。。。。,所有关联的代码你都必须改,这些代码分散到系统的各个地方,很容易遗忘某个地方,忘记修改了。。。。

 

这就是面向接口的好处,也就是说,类要依赖接口,而不依赖具体的实现,就像Payment,pay方法依赖的是List接口,而不是其实现类ArrayList,所以我们更改了List接口的实现(Vector),不会影响到 Payment,这就将变化的影响减到最低.

 
原创粉丝点击