重构:我们如何抽象这些类

时间:2012-09-06 14:44:11

标签: c# abstract-class

在某些类中有一些方法和成员变量看起来非常相似,我认为我可以重构它们并将它们抽象出来......但我不确定这是否是正确的方法:

例如,假设我有这两个类:

public class CaseField
{
  private int mlObjectKey = CommonIndepClass.GetNextObjectKey();
  public int ObjectKey
  {
    get
    {
      return mlObjectKey;
    }
  }

  // some other specific methods...
}

然后是另一个班级:

public class AsOfField
{
   private int mlObjectKey = CommonIndepClass.GetNextObjectKey();

   public int ObjectKey
   {
       get
       {
          return mlObjectKey;
       }
   }

   // some specific methods ... 
}

所以我在想是否正确创建一个Abstract类并将这些方法和成员变量分解并将它们放在那个抽象类中:

public abstract class CommonFields
{
   private int mlObjectKey = CommonIndepClass.GetNextObjectKey();

   public int ObjectKey
   {
       get
       {
          return mlObjectKey;
       }
   }

}

public class CaseField: CommonFields
{
  // just its own specific methods and member variables. 
}



public class AsOfField: CommonFields
{
  // just its own specific methods and member variables. 
}

1 个答案:

答案 0 :(得分:2)

这似乎并非不合理。

另一种方法是使用mixins实现此功能。这将允许您定义一个具有共同功能的类,但您不必实现公共基类。有关详细信息,请参阅this SO answer