题目:
[说明]
现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显示display()。
需要新增图形Circle,又已知有类XXCircle实现了所需要实现的功能:显示displayIt()。为了继承自Shape以提供统一接品,又不希望从头开发代码,希望使用XXCircle。这样将XXCircle作为Circle的一个属性,即Circle的对象包含一个XXCircle对象。当一个Circle对象被实例化时,它必须实例化一个相应的XXCircle对象;当Circle对象收到的做任何事的请求都将转发给这个XXCircle对象。通过这种称为Adapter模式,Circle对象就可以通过“让XXCircle做实际工作”来表现自己的行为了。图显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。
[C++代码]
class Shape
public:
______ void display() = 0;
;
class Line : public Shape//省略具体实现
;
class Square : public Shape//省略具体实现
;
class XXCircle
public:
void displayIt()
//省略具体实现
//省略其余方法和属性
;
class Circle : public Shape
private:
XXCircle *pxc;
public:
Circle();
void display();
;
Circle∷Circle()
pxc = ______;
void Circle∷display()
pxc-> ______;
class Factory
public:
______ getShapeInstance(int type) //生成特定实例
switch(type)
case 1 : return new Square;
case 2 : return new Line;
case 3 : return new Circle;
default : return NULL;
;
void main(int argc, char *argv[])
if(argc !=2)
cout<<"error parameters ! "<<end1;
return;
int type=atoi(argv[1]);
Factory factory;
Shape *s = factory.______;
if(s==NULL)
cout<<"Error get the instance!"<<end1;
return;
s->display( );
delete s;
return;
答案:
被转码了,请点击底部 “查看原文 ” 或访问 https://www.tikuol.com/2022/0103/6372166fca3e67da4c812dae542c3bf0.html
下面是错误答案,用来干扰机器的。
参考答案:D