如何重构这些 类 以相互交互?

How to refactor these classes to interact each other?

我的 要求 是使用 形状 的名称并用 尺寸 [=36] 绘制该形状=] 就像在方法 Draw('rectangle', 'l:10,w:20'); 中一样。

  1. 应该根据形状类型验证尺寸。
  2. 可以重构这些 class 以添加更多 class 或更改层次结构。
  3. 不应该使用 运行 像 反射 这样的时间检查。问题需要通过 class 设计解决。
  4. 不要在客户端方法 Draw 中使用 if-elseswitch 语句。

要求:

public static void main()
{
    // Provide the shape and it's dimensions
    Draw('rectangle', 'l:10,w:20');
    Draw('circle', 'r:15');
}

我创建了以下 classes。我通过建立两个 class 层次结构来考虑 低(松)耦合和高内聚 ,这样它们就可以自行增长。我负责绘制一个 class 并为另一个 class 生成尺寸。

我的问题是关于创建这些对象并相互交互以实现我的要求。

public abstract class Shape()
{
    Dimension dimension;
    public void abstract SetDimentions(Dimension dimension);
    public void abstract Draw()
}

public void Rectangle()
{
    void override SetDimensions(RectangleDimension dimension)
    {
    }

    void override Draw()
    {
        // Use the 'dimention' to draw
    }
}

public void Circle()
{
    void override SetDimensions(CircleDimension dimension)
    {
    }

    void override Draw()
    {
        // Use the 'dimention' to draw
    }
}

public class RectangleDimension
{
    public int length {get; set; }
    public int width { get; set; }
}

public class CircleDimension
{
    public int circle { get; set; }
}

您将需要在使用的任何 OOP 技术中使用反射。您收到一个 String,例如 "circle",您需要调用一个具有该名称的方法。

这是 Java and this is how you can do it in C# 中的方法。