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" 中所講的那樣。