我正在爲使用C#的大學項目編寫一個簡單的圖形編輯器。
我創建了一個層次結構,其中每種形狀(圓形,矩形,橢圓形等)都從基類Shape繼承而來,它包含形狀顏色作爲受保護的字段。
將每個圖形形狀分爲兩部分 - 幾何圖形和渲染部件是否是一個好主意?
public abstract class Shape {
protected Color color;
public Shape(Color c) {
color = c;
}
public Color FigureColor {
get { return color; }
protected set { color = value; }
}
public abstract void render(Bitmap canvasToDrawOn);
public abstract void unrender(Bitmap canvasToDrawOn);
public abstract void renderPrototype(Bitmap canvasToDrawOn);
}
的想法是,我希望每一個類型的形狀來封裝它`幾何部分,例如:
public class TwoDPoint: TwoDShape {
Point2DGeometry point;
public TwoDPoint(Color c, Point2DGeometry p): base(c) {
point = new Point2DGeometry(p);
}
public struct Point2DGeometry {
Int32 x;
Int32 y;
public Point2DGeometry(Int32 X, Int32 Y) {
x = X;
y = Y;
}
public Point2DGeometry(Point2DGeometry rhs) {
x = rhs.Abscissa;
y = rhs.Ordinate;
}
public Int32 Abscissa {
get { return x; }
private set { x = value; }
}
public Int32 Ordinate {
get { return y; }
private set { y = value; }
}
}
Ellipse類將封裝EllipseGeometry等
它是一個在面向對象設計方面做出了很好的決定,如果是這樣,那麼創建這種幾何類型的並行層次結構可能更好一些?