黑马程序员技术交流社区
标题:
张老师说的向接口编程
[打印本页]
作者:
黑马斯巴达
时间:
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