问答题 阅读下列说明和Java代码,在 (n) 处填入适当的字句。
[说明]
现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF_种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图10.21所示。
【正确答案】(1) this.imp (2) ImageImp (3) imp.doPaint(m) (4) new BMP()
(5) new WinImp() (6) image1.setImp(imageImp1) (7) 17
【答案解析】[要点解析] 本题采用桥接模式,桥接设计模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。程序解释如下。
(1) this.imp= imp;/*this在Java中所代表的意思是当前类,明确引用的是本类中的属性。*/
protected (2)ImageImp imp;/*要引用ImageImp类的对象,必须先加以声明,否则无法引用。*/
(3)imp.doPaint (m);/*显示像素矩阵m 将图像文件解析完成后,得到像素矩阵,接下来自然是调用相应的函数将它显示出来。由于imp是父类中的protected成员,因此在于类中可以引用。*/
Image image1=(4) new BMP() ;/*创建Image类的对象,Image类有三个子类,分别为BMP、GIF、JPEG,由于此处解析的是BMP文件,故是BMP类型并为它分配内存空间。*/
ImageImp ImageImp1=(5)new Winlmp();/*创建ImageImp类的对象,ImageImp类有两个子类,分别为WinImp类和LinuxImp类,由于此处是Windows操作系统,故是WinImp类型并为它分配内存空间。 */
(6) image1. setImp (ImageImp1);/*调用该函数,则Image类的对象就可以调用ImageImp类及其派生子类中的函数。*/