我有一个界面:
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接口。
答案 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...
}
}
(别介意语法,我编写了 - 只是伪代码)