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

07-05-12 zyzzy
例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修改过]

banq
2007-05-14 09:31
>如果在没有接口实现者的情况下都无法运行

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

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

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

zyzzy
2007-05-14 22:10
谢谢 banq老师, 我会去看看模式这方面的,如果有什么问题,我会在来问您的

猜你喜欢