假设有一个像这样的多边形类:
public class Polygon
{
Point[] _vertices;
public class Polygon(Point[] vertices)
{
_vertices = vertices;
}
}
Run Code Online (Sandbox Code Playgroud)
要制作三角形,正方形,六边形,你宁愿:
CreateSquare返回现成的Polygon类的静态方法?这个:
public class Square : Polygon
{
public class Polygon(double size)
{
_vertices = new Point[]{ new Point(0,0), new Point(size,0), new Point(size,size), new Point(0,size)};
}
}
Run Code Online (Sandbox Code Playgroud)
或这个:
public class Polygon
{
Point[] _vertices;
public class Polygon(Point[] vertices)
{
_vertices = vertices;
}
public static Polygon CreateSquare(double size)
{
double verts = new Point[]{ new Point(0,0), new Point(size,0), new Point(size,size), new Point(0,size)};
return new Polygon(verts);
}
}
Run Code Online (Sandbox Code Playgroud)
从OOP编程的角度来看,哪种方法更正确?请注意,派生类不会向原始Polygon添加任何内容.
另外,在后一种情况下,有没有方便的命名约定?
还有其他方法我不知道吗?
谢谢.
如果不知道使用这些类的上下文,这个问题永远不会有明确的答案,但是如果不需要更具体的类,我就不会创建它们。如果您向 . 添加属性,则不会创建RedPolygon或。BlueSquareColorPolygon
一旦存在正方形独有的行为,您就可以创建子类 - 例如,我可以想象一些数学运算(例如命中测试)在正方形上比在恰好是正方形的多边形上执行得更快。