谁能给我讲一下接口回调啊?

例1
下面是一个接口回调的例子 :
public class TestCallBack{
public static void main(String[] args){
UseDriver ud = new UseDriver() ;
DBdriver db = new IBMdriver() ;
ud.useDriver(db) ;
}
}

//sun公司定义的接口
interface DBdriver{
void connect() ;
}

//使用者
class UseDriver{
public void useDriver(DBdriver db){
db.connect() ;
}
}

//实现者
class IBMdriver implements DBdriver{
public void connect(){
System.out.println("IBM Connect") ;
}
}

例2
为什么同样的例子写成这下面这样就不好啊 ?
public class TestCallBack{
public static void main(String[] args){
DBdriver db = new IBMdriver() ;
db.connect();
}
}

//sun公司定义的接口
interface DBdriver{
void connect() ;
}

//实现者
class IBMdriver implements DBdriver{
public void connect(){
System.out.println("IBM Connect") ;
}
}

个人理解:例1 和 例2 如果在没有接口实现者的情况下都无法运行 , 那为什么例2 不如 例1 好呢?



[该贴被zyzzy于2007年05月12日 00:52修改过]

>如果在没有接口实现者的情况下都无法运行
这是不对的,通过工厂模式或Ioc/DI模式,在当前代码中可以没有接口实现者也能运行,这就是接口必须和模式配合使用的原因。

以下话题泛泛而谈,不针对楼主个人:

这引出另外一个我之前一再重申的话题:初学者学习模式比学习Java语言更重要,学习Java语言,虽然知道接口,但是不知接口魅力,而且会产生如楼主这样认识,最终阻碍自己对接口深入探索,很多人就因此被挡在了面向对象编程大门之外,而且自己不知觉,这是最大的悲哀啊,这个问题几乎90%程序员都没有意识到(其实不复杂,就是一个捅破窗户纸的事情)。

谢谢 banq老师, 我会去看看模式这方面的,如果有什么问题,我会在来问您的