枚举与具体类来表示对象类型

本文关键字:表示 对象 类型 枚举 | 更新日期: 2023-09-27 18:27:22

基本上,我需要实现资源(黄金、钢铁等(功能及其数量,我想知道是将单个资源类与 resourceType 字段一起使用更好,还是最好使用许多继承资源的 ConcreteResource 类。以下是一些示例,以便更好地理解我的问题:

使用枚举:

class Resource
{
    private ResourceType resourceType;
    private int quantity;
}
enum ResourceType
{
    ConcreteResource1,
    ConcreteResource2
}

使用具体类:

abstract class Resource
{
    private int quantity;
}
class ConcreteResource1 : Resource
{       
}
class ConcreteResource2 : Resource
{
}

枚举与具体类来表示对象类型

这实际上取决于对象的使用。

使用类可以获得更多功能:

  1. 它可以继承,
  2. 它可以有方法,
  3. 它可以具有属性,字段等...

因此,一般来说,如果您的对象在方法、变量、接口等方面不相似(也就是说,它们是两个完全不同的对象(,则应使用 class 。但是,如果您的对象除了"类型"之外几乎相同,那么Enum就足够了。

在您的示例中,假设两种金属的使用方式完全不同,一种有一组方法 [A1,A2,...,An],另一种有 [B1,B2,...,Bm],那么最好通过class可能继承来自同一MetalBase类来区分它们。

但是,如果它们的使用方式几乎相同,那么您应该考虑使用Enum