阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。【说明】欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表17—1所示。

该绘图软件的扩展性要求,将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接(Bridge)模式来实现上述要求,得到如图17—2所示的类图。
【正确答案】正确答案: (1)abstract C1as s; (2)publiC abstract void drawLine(double x1,double y1,double x2,double y2) ; (3)public absttact void drawCircle(double x,double y,double r); (4)DPI.draw—a—ircle(x,y,r);(5)DP2.drawCircie(x,y,r); (6)publiC abstract void draw();
【答案解析】解析:本题考查Bridge桥接模式的概念及应用,将抽象与其实现解耦,使它们都可以独立地变化。大致意思是说:将一组实现与另一组使用他们的对象分离。java语言中声明抽象函数用abstract,且每个函数都需要声明访问类型。对照试题五的代码我们可以看出: (1)为abstract class;这里的实现指的是抽象类及其派生类用来实现自己的对象(而不是抽象类的派生类,这些派生类被称为具体类)Drawing~一个虚拟基类,里面包含了希望不同策略实现的算法,派生类V1Drawing,V2Drawing都派生19Drawing,对基类中的希望实现的算法都作了具体实现,且它们都含有drawLine和drawCircle函数,所~Draw类中缺失的应该是这两个算法,于是(2)public abstract void drawLine(double x1,double y1,double x2,double y2);(3)public abstract void drawCircle(double x,double y,double r);DPI$~IDP2包含了绘制Line和Circle的具体实现的Static方法,因此在VlDrawing,V2Drawing类中可以直接进行调用它们(4) DPI.draw—a—circle(x,y,r)(5)DP2.drawCircle(x,y,r);Shape类派生出Rectangle和Circle类,里面都含有draw方法,但是具体draw方法的实现却不相同,所以(6)public abstract void draw。