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

时间:2017-03-22 12:18:51

标签: oop loose-coupling cohesion

我的要求是使用形状的名称,并使用方法Draw('rectangle', 'l:10,w:20');中的尺寸绘制该形状。

  1. 应根据形状类型验证尺寸。
  2. 可以重构这些类以添加更多类或更改层次结构。
  3. 不应使用像 reflection 这样的运行时检查。这个问题只需要通过课堂设计来解决。
  4. 请勿在客户端方法if-else中使用switchDraw语句。
  5. 要求:

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

    我创建了以下类。我通过制作两个类层次结构来考虑低(松散)耦合和高内聚,以便它们可以在它自己的基础上增长。我一直负责绘制一个类并为另一个类生成维度。

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

    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; }
    }
    

1 个答案:

答案 0 :(得分:1)

您需要在所使用的任何OOP技术中使用反射。您收到类似String的{​​{1}},您需要调用具有该名称的方法。

这是Java中您可以这样做的方法,您可以在C#中执行此操作。