WEB开发网
开发学院软件开发Java 深入理解Apache Mina (1)---- Mina的几个类... 阅读

深入理解Apache Mina (1)---- Mina的几个类

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示: 图片看不清楚?请点击这里查看原图(大图),通过对IoService和BaseIoService的比较可以发现,深入理解Apache Mina (1)---- Mina的几个类(3),除了 getDefaultConfig()这个方法没有在BaseIoService中实现之外,其他的方法都已经在B

图片看不清楚?请点击这里查看原图(大图)。

通过对IoService和BaseIoService的比较可以发现,除了 getDefaultConfig()这个方法没有在BaseIoService中实现之外,其他的方法都已经在BaseIoService实现了。这里就有一个问题,为什么BaseIoService只是实现了IoService的部分方法,而没有全部实现IoService的方法呢?通常都知道,接口中的方法是必须要由实现类来实现的,这点是毋庸置疑的。你可以写一个空方法,里面没有任何的逻辑处理,但是你的实现类中却不能没有该方法。但是在Mina 中作为实现类的BaseIoService却没有IoService指定的方法getDefaultConfig(),难道Mina真的有独到之处?不是!仔细看看

BaseIoService你就会知道,BaseIoService是一个抽象类,抽象类就是用来被继承的,它提供了一些其子类公用的一些方法,当抽象类实现一个接口时,抽象类可以有选择性的实现其所有子类都需要的实现的一些方法,对于接口中指定法方法,抽象类可以选择全部实现或者部分实现。在Mina中如果没有BaseIoService这个抽象类,而是由 BaseIoAcceptor和BaseIoConnector直接去实现BaseIoService接口,那么必然会导致这个两个实现类中都要重写相应的方法,这样就脱离了面向对象设计的本质,没有达到复用的目的。在BaseIoAcceptor/BaseIoConnector和 BaseIoService之间添加一个BaseIoService就是为了达到代码复用的目的。在这个问题上主要是要记住两点:

1)抽象类在实现接口的时候可以部分或者全部实现接口中的方法。但是当抽象类只是实 

现了接口中的部分方法的时候,抽象类的子类必须要实现抽象类中未实现的接口的方

上一页  1 2 3 4 5 6 7  下一页

Tags:深入 理解 Apache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接