Jak zoptymalizować kod powtarzających się metod

0

Mam klasę abstrakcyjną Ship</code> z metodą <code class="csharp">public abstract bool PlacementCheck(int x, int y, ShipRotation rot) oraz dziedziczące po niej 5 klas różnych statków przesłaniające tą metodę. Trzy z tych metod nadpisujących są prawie identyczne, różnią się jedną stałą, którą mogę umieścić jako pole w metodzie. Czy mogę to jakoś zoptymalizować żeby dla tych trzech klas nie przepisywać tego samego?

4

Opcje są dwie:

  1. Napisać implementacje w klasie bazowej a nadpisywać tylko tam gdzie potrzebujesz "innej" implementacji. Sprawdza sie to kiedy masz jedna "wspólną" i kilka zupełnie innych i kiedy nie wymaga to dodatkowych danych.
  2. Rozwiązanie bardziej ogólne: delegacja. Zrób interfejs PlacementChecker i niech klasa dziedzicząca ma implementacje tego interfejsu jako swoje pole. Wtedy ta twoja metoda to:
public bool PlacementCheck(int x, int y, ShipRotation rot){
    getChecker().check(x,y,rot);
}

Plus jest taki, że możesz dzięki temu obługiwać sytuacje kiedy np. dwa statki mają taką samą logikę sprawdzania, dwa inne mają taką samą i dwa kolejne taką samą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1