[说明]
某绘图系统存在Point、Line和Square 3种图元,它们具有Shape接口,图元的类图关系如图8-6所示。

现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来的,它提供的接口不被系统直接使用。[Java代码1]既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。[Java代码2]根据用户指定的参数生成特定的图元实例,并对其进行显示操作。
该绘图系统定义的接口与XCircle提供的显示接口及其功能如表8-3所示。

[Java代码1]
class Circle (1)
private (2) pxc;
public Circle ()
pxc = new (3) ;
public void display()
pxc. (4) ;
[Java代码2]
public class Factory
public (5) getShapeInstance(int type)//生成特定类实例
Switch(type)
case 0:return new Point();
case 1:return new Rectangle();
case 2:return new Line();
case 3:return new Circle();
default:return null;
;
public class App
public static void main(String argv[])
if(argv.length !=1)
System.out.println("error parameters!");
return;
int type=(new Integer(argv[0])).intValue();
Factory factory=new Factory();
Shap s ;
s= factory. (6)
if(s==null)
System.out.println("Error get instance!");
Return;
s.display();
return;