我正在创建一个国际象棋游戏,我已经创建了白嘴鸦和主教,我即将开始创建女王棋子。问题在于女王结合了白嘴鸦和主教的动作,所以我不想写出重复的代码,而只是使用2个类作为白嘴鸦和主教的代码,而他们的方法进入后者。如何将2个类中的2个方法合并为1个基类?
这里的主教类
public class OficerPiece : Figure
{
public OficerPiece(FigureDefinition definition) : base(definition)
{
}
protected override List<Tuple<int, int>> GetValidTurns()
{
//here i set the valid moves
}
}
的车类是基本一致的,但不同的实施GetValidTurns()
在我的项目每一件继承它包含的信息,每一块Figure
抽象类正在使用的唯一区别是在方法中,所以我们让派生类去实现它。
那是女王级
public class Kralica : Figure
{
public Kralica(FigureDefinition definition) : base(definition)
{
}
protected override List<Tuple<int, int>> GetValidTurns()
{
//here i want to combine the 2 methods GetValidTurns from the bishop class and the rook class
}
}
我不能在那里实现有效的车轮转弯,因为它们还必须继承'图'类,因为它包含基本函数来检查转弯是否有效。 – PreqlSusSpermaOhranitel
您可以使用ValidTurns构造函数或函数参数传递Figure类。也许你想把你的轮回验证的其他逻辑也放在这个ValidTurn类中(参见单一责任原则)。 – natschz
你能编辑你的答案,所以你可以告诉我该怎么做?我正在讨论带参数 – PreqlSusSpermaOhranitel