黑马程序员技术交流社区

标题: 张老师说的向接口编程 [打印本页]

作者: 黑马斯巴达    时间: 2013-3-7 17:50
标题: 张老师说的向接口编程
本帖最后由 谢军 于 2013-3-9 16:07 编辑

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Road {

private List<String> car=new ArrayList<String>();//张老师说用前面用list而不用ArrayList的原因是要面向接口编程,
                                                                            // 在交通灯里有具体体现吗?还是只是预留接口为了以后的维护之便
private String name =null;
public Road(String name){
         this.name=name;
         
         ExecutorService pool=Executors.newSingleThreadExecutor();
        pool.execute(new Runnable(){
                public void run(){
                         for(int i=1;i<1000;i++){
                                 try {
                                        Thread.sleep((new Random().nextInt(10)+1)*1000);
                                } catch (InterruptedException e) {
                                        e.printStackTrace();
                                }
                                 car.add(Road.this.name+" "+i);
                                 
                         }
                }
        });
         ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
        timer.scheduleAtFixedRate(new Runnable(){
                public void run(){
                        if(car.size()>0){
                                boolean lighted=Lamp.valueOf(Road.this.name).isLighted();
                                if(lighted){
                                
                                        System.out.println(car.remove(0)+"is traversing !");
                                       
                                }
                        }
                        
                }
        },
                        1,
                        1,
                        TimeUnit.SECONDS);
         


作者: 文密    时间: 2013-3-7 21:49
List只是集合最大的父类,实现List接口的不只是ArrayList,还有其他容器类
List<String> car=new ArrayList<String>();
编译时类型是List,运行时类型是ArrayList,实现多态性
而List接口的实现类不只有ArrayList一个,用一个List类型的引用这是“面向接口编程”,好处有很多,
以后我们在工作的时候很多不是我们写的类,而是第三方类库
我们面向接口编程,不需要了解是什么实现类,我们都把它们当List接收过来就好了,
我们就当成List来用。提高程序的扩展性,和降低耦和度





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2