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

本文关键字:之间 方法 调用 对象 静态 何简化 一组 | 更新日期: 2023-09-27 17:49:41

我在程序中使用了一些静态"shape"类,由于每个静态类都需要执行相同类型的操作,因此我想知道是否有一种方法可以泛化方法调用。如果类不是静态的,我只使用接口。

这是我的情况的要点:

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语句是否像它将要得到的那样好?

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

不清楚是否需要单独的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();
            //...
        }
    }
}