宣化上人 华严经:15.3 泛型接口
来源:百度文库 编辑:偶看新闻 时间:2024/07/06 16:35:49
15.3 泛型接口
泛型也可以应用于接口。例如生成器(generator),这是一种专门负责创建对象的类。实际上,这是工厂方法设计模式的一种应用。不过,当使用生成器创建新的对象时,它不需要任何参数,而工厂方法一般需要参数。也就是说,生成器无需额外的信息就知道如何创建新对象。
一般而言,一个生成器只定义一个方法,该方法用以产生新的对象。在这里,就是next()方法。我将它收录在我的标准工具类库中:
![](http://image49.360doc.cn/DownloadImg/2012/02/1513/21528659_1.jpg)
方法next()的返回类型是参数化的T。正如你所见到的,接口使用泛型与类使用泛型没什么区别。
为了演示如何实现Generator接口,我们还需要一些别的类。例如,Coffee类层次结构如下:
![](http://image49.360doc.cn/DownloadImg/2012/02/1513/21528659_2.jpg)
![](http://image49.360doc.cn/DownloadImg/2012/02/1513/21528659_3.jpg)
![](http://image49.360doc.cn/DownloadImg/2012/02/1513/21528659_4.jpg)
下面的类是Generator
![](http://image49.360doc.cn/DownloadImg/2012/02/1513/21528659_5.jpg)
如果还想更进一步,编写一个实现了Iterable的Fibonacci生成器。我们的一个选择是重写这个类,令其实现Iterable接口。不过,你并不是总能拥有源代码的控制权,并且,除非必须这么做,否则,我们也不愿意重写一个类。而且我们还有另一种选择,就是创建一个适配器(adapter)来实现所需的接口,我们在前面介绍过这个设计模式。
有多种方法可以实现适配器。例如,可以通过继承来创建适配器类:
![](http://image49.360doc.cn/DownloadImg/2012/02/1513/21528659_6.jpg)
![](http://image49.360doc.cn/DownloadImg/2012/02/1513/21528659_7.jpg)
如果要在循环语句中使用IterableFibonacci,必须向IterableFibonacci的构造器提供一个边界值,然后hasNext()方法才能知道何时应该返回false。
练习7:(2) 使用组合代替继承,适配Fibonacci使其成为Iterable。
练习8:(2) 模仿Coffee示例的样子,根据你喜爱的电影人物,创建一个StoryCharacters的类层次结构,将它们划分为GoodGuys和BadGuys。再按照CoffeeGenerator的形式,编写一个StoryCharacters的生成器。
MIC输入、TYPE II型PCMCIA接口
耳机接口分为几种类型
什么是并型接口和串型接口?有什么特点和区别?
SNP接口是什么接口?
有线电视接口是什么接口?
串行接口,并行接口??
网线接口 1394接口
1394接口是什么接口?
双24针DVI-I接口 24针DVI-I接口/15针D型(VGA)接口 有什么区别?
双24针DVI-I接口 24针DVI-I接口/15针D型(VGA)接口 有什么区别?
硬盘有几种类型的接口?分别是什么意思?
PS/2型的鼠标接口支持热拔插么?
AMD,AM2接口型的CPU是多少针的???
系统接口
数字音频接口
接口问题?
接口技术
MP3USB接口
mp3usb接口
网络接口
硬盘接口?
接口问题
主板接口
显卡接口