0

我有一个界面:

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 接口。

4

1 回答 1

0

仅将继承用于代码重用并不是一个好主意。只有在您真正创建子类型时才让 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...
   }
}

(别管语法,我编的——只是伪代码)

于 2013-06-30T21:23:17.600 回答