Suppose to have a polygon class like this one:
public class Polygon
{
Point[] _vertices;
public class Polygon(Point[] vertices)
{
_vertices = vertices;
}
}
如果要制作三角形、正方形、六边形,你更倾向于:
- 从 Polygon 继承 Triangle、Square 等类,提供一个特定的构造函数并通过编程生成点?
- 添加一个名为
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)};
}
}
或者这样:
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);
}
}
从面向对象编程的角度来看,哪种方法更正确?请注意,派生类没有添加任何内容到原始多边形类。
此外,在后一种情况下,是否有任何便捷的命名约定?
我是否还有其他不知道的方法?
谢谢。