2个类实现相同的接口,一个派生自另一个

时间:2013-06-30 20:15:41

标签: inheritance interface strategy-pattern

我有一个界面:

Interface I
{
   void Update();
}

和2个实现它的类,A& B. 此外,两个类在更新中使用相同的确切函数,但B稍后使用不同的代码:

Public class A : I
{
   public void Update()
   {
      someFunc();
   }
}

Public class B : I
{
   public void Update().    
   {
      someFunc();
      ....some B code...
   }
}

所以我认为将someFunc()移动到A并让B继承自A,因为B执行A所做的事情以及其他事情。这个设计是否正常,因为感觉不是..或者你可以建议更好的东西吗?

我想离开界面就像在策略设计模式中那样,因为稍后可以到达C类,它将以不同于A和B的方式实现I接口。

1 个答案:

答案 0 :(得分:0)

仅使用继承进行代码重用不是一个好主意。如果您真正创建subtype,只允许A继承。在您的情况下,我将创建一个包含公共代码的抽象类。

Interface I
{
   void Update();
}

abstract class AbstractI : I
{
   someFunc() {
      //implementation
   }
}

Public class A : AbstractI 
{
   public void Update()
   {
      someFunc();
   }
}

Public class B : AbstractI 
{
   public void Update().    
   {
      someFunc();
      ....some B code...
   }
}

(别介意语法,我编写了 - 只是伪代码)