我正在創建一個國際象棋遊戲,我已經創建了白嘴鴉和主教,我即將開始創建女王棋子。問題在於女王結合了白嘴鴉和主教的動作,所以我不想寫出重複的代碼,而只是使用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