为什么要这样设计,还是我理解错误

03-11-04 chinahero
在一些开源项目中,我经常看到这样的类设计代码,成员变量用抽象类或接口

比如lucene中的

final class DocumentWriter {

private Analyzer analyzer;

private Directory directory;

private FieldInfos fieldInfos;

private int maxFieldLength;

...

}

其中 Directory,Analyzer 是抽象类,这样设计的目的是什么?

另外,如果用接口和用抽象类的区别是什么?

    

hbc20
2003-11-05 09:24
我估计是这个类中有某一部分是需要变化的,所以它就用了一个抽象类作为

成员变量,这样从语义的角度理解更加自然,方便吧!

接口是不能作为成员变量的吧!

hbc20
2003-11-05 09:38
sorry,上面的我说错了,我用的是C++,c++中的接口是纯需函数,只能定义为指针,不能定义为成员变量。

这里用抽象类,目的还是可以方便扩展吧,但是在调用的时候,抽象类中的函数必须已经实现好了,同时也可以实现接口的功能,这样用比接口更加灵活了。

blureyes
2003-11-05 17:48
这样做的目的是希望尽可能提供灵活性和重用性,使class和class之间是松耦合的

kitta
2003-11-06 19:51
这样可以使你的类依赖一个抽象,而不是一个具体实现。否则就失去了抽象的意义。

猜你喜欢
2Go 1 2 下一页