4

プログラムで使用している静的な「シェイプ」クラスがいくつかあります。各静的クラスは同じ種類の操作を実行する必要があるため、メソッド呼び出しを汎用化する方法があるかどうか疑問に思っています。クラスが静的でない場合は、単純にインターフェイスを使用します。

私の状況の要点は次のとおりです。

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 ステートメントはうまくいきますか?

4

1 に答える 1

0

Triangle別のSquareクラスが必要かどうかは明確ではありません。それらを排除して、引数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、このように使用するのがごく一般的で正常だと思います。

それでも、別のクラスTriangleとクラスがあり、メソッドSquare内にスイッチがある場合があります。つまり、クラス内にカプセル化され、そこで一度だけ使用されShape.GetNumVertsます。Shape.GetNumVerts(ShapeType.Triangle);switchShape

public static class Shape
{
    public static int GetNumVerts(ShapeType type)
    {
        switch (type)
        {
            case ShapeType.Triangle:return Triangle.GetNumVerts();
            case ShapeType.Square:return Square.GetNumVerts();
            //...
        }
    }
}
于 2012-12-27T05:47:46.940 に答える