如何简化一组静态对象之间的类似方法调用?
本文关键字:之间 方法 调用 对象 静态 何简化 一组 | 更新日期: 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语句是否像它将要得到的那样好?
不清楚是否需要单独的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);
,即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();
//...
}
}
}