如何简化一组静态对象之间的类似方法调用?

时间:2012-12-27 05:39:05

标签: c# static

我在我的程序中使用了一些静态“形状”类,并且因为每个静态类需要执行相同类型的操作,所以我想知道是否有一种方法可以对方法调用进行泛化。 如果课程不是静态的,我只需使用界面。

以下是我的情况要点:

public static Triangle
{

  public int getNumVerts()
  {
    return 3;
  }

  public bool isColliding()
  {
    return Triangle Collision Code Here
  }

}

public static Square
{

  public int getNumVerts()
  {
    return 4;
  }

  public bool isColliding()
  {
    return Square Collision Code Here
  }

}

我更喜欢做的只是调用Shape.getNumVerts()而不是我当前的switch语句:

switch (ShapeType)
{
  case ShapeType.Triangle:
      Triangle.GetNumVerts();
  case ShapeType.Square:
      Square.GetNumVerts();
}

如果我使用单例而不是静态类,我可以简单地使用多态,但是要避免使用单例,并且我需要传递大量的引用,以便我可以根据需要对各个形状进行处理

有没有办法对这些静态类进行分组,或者switch语句是否与它将要获得的一样好?

1 个答案:

答案 0 :(得分:0)

目前尚不清楚您是否需要单独的TriangleSquare类。您可以消除它们,只有Shape类,其方法接受ShapeType参数。但它实际上还带有switch

public static class Shape
{
    public static int GetNumVerts(ShapeType type)
    {
        switch (type)
        {
            case ShapeType.Triangle:return 3;
            case ShapeType.Square:return 4;
            //...
        }
    }
}

对于switch,我认为以这种方式使用它是很常见和正常的。

但是,您可能有单独的TriangleSquare类,并且可以在Shape.GetNumVerts方法中进行切换。它会让您致电Shape.GetNumVerts(ShapeType.Triangle);,即switch封装在Shape课程中,并且只在那里使用过一次。

public static class Shape
{
    public static int GetNumVerts(ShapeType type)
    {
        switch (type)
        {
            case ShapeType.Triangle:return Triangle.GetNumVerts();
            case ShapeType.Square:return Square.GetNumVerts();
            //...
        }
    }
}