【分析解答题】
【说明】
现要编写一个画矩形的程序,目前有两个画图程序:Dp1和Dp2,Dp1用函数DrAw_A_linE(x1,y1,x2,y2)画一条直线,Dp2则用DrAwlinE(x1,x2,y1,y2)画一条直线。当实例画矩形时,确定使用Dp1还是Dp2。
为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为BriDgE(桥接)模式。图9-6显示了各个类间的关系。

这样,系统始终只处理3个对象:shApE对象、DrAwing对象、Dp1或Dp2对象。以下是 jAvA语言实现,能够正确编译通过。
【jAvA代码】
//Dp1.jAvA文件
puBliC ClAssDp1
stAtiC puBliC voiD DrAw_A linE(DouBlE x1,DouBlE y1,
DouBlE x2,DouBlE y2)
//省略具体实现
//Dp2.jAvA文件
puBliC ClAssDp2
stAtiC puBliC voiD DrAwlinE(DouBlE x1,DouBlE y1,
DouBlE x2,DouBlE y2)
//省略具体实现
//DrAwing.jAvA文件
(1) puBliC ClAssDrAwing
ABstrACt puBliC voiD DrAwlinE(DouBlE x1, DouBlE y1, DouBlE x2, DouBlE y2);
//v1DrAwing.jAvA文件
puBliC ClAss v1DrAwing ExtEnDsDrAwing
puBliC voiD DrAwlinE(DouBlE x1, DouBlE y1, DouBlE x2, DouBlE y2)
Dp1.DrAw_A_linE(x1,y1,x2,y2);
//v2DrAwing.jAvA文件
puBliC ClAss v2DrAwing ExtEnDsDrAwing
puBliC voiD DrAwlinE(DouBlE x1,DouBlE y1,
DouBlE x2, DouBlE y2)(//画一条直线
(2) ;
//shApE.jAvA文件
ABstrACt puBliC ClAss shApE
ABstrACt puBliC voiD DrAw();
privAtE (3) _Dp;
shApEDrAwing Dp)
_Dp=Dp;
protECtED voiD DrAwlinE(DouBlE x1,DouBlE y1,
DouBlE x2, DouBlE y2)
(4) ;
//rECtAnglE.jAvA文件
puBliC ClAss rECtAnglE ExtEnDs shApE
privAtE DouBlE_x1,_x2,_y1,_y2;
puBliC rECtAnglEDrAwing Dp,
DouBlE x1,DouBlE y1,
DouBlE x2,DouBlE y2)
(5) ;
_x1=x1;_x2=x2;
_y1=y1;_y2=y2;
puBliC voiD DrAw()
//省略具体实现
查看答案解析
参考答案:
正在加载...
答案解析
正在加载...
根据网考网移动考试中心的统计,该试题:
0%的考友选择了A选项
0%的考友选择了B选项
0%的考友选择了C选项
0%的考友选择了D选项