class Polygon { . . public int getPerimeter() {...} public boolean isConvex() {...} public boolean containsPoint(Point p) {...} . . }
并将其更改为类似以下的形式:
class Polygon { . . public int getPerimeter() {return pPolygon.computePerimeter(this);} public boolean isConvex() {return pPolygon.isConvex(this);} public boolean containsPoint(Point p) {return pPolygon.containsPoint(this, p);} . . }
其中,pPolygon 如下所示:
class pPolygon { static public int computePerimeter(Polygon polygon) {...} static public boolean isConvex(Polygon polygon) {...} static public boolean containsPoint(Polygon polygon, Point p) {...} }
第二步:将非基本数据类型的输入参数类型转换为接口类型 通过接口参数类型而非通过类继续利用多态性,这是在面向对象编程方法中实现可重用性的真正基础,正如 Allen Holub 在 "Build User Interfaces for Object-Oriented Systems, Part 2" 中所讲的那样。