SOLID – Zasada pojedynczej odpowiedzialności

Definicja

Zasada pojedynczej odpowiedzialności (SRP – Single Responsibility Principle)

Zasada SRP mówi, że klasa (lub moduł) powinna mieć tylko jeden powód do zmiany, czyli powinna odpowiadać tylko za jedno konkretne zadanie lub odpowiedzialność w systemie.

Innymi słowy, każda klasa powinna zajmować się tylko jednym aspektem funkcjonalności aplikacji. Jeśli klasa ma wiele odpowiedzialności, zmiana w jednej z nich może niechcący wpłynąć na inne — co prowadzi do trudności w utrzymaniu i testowaniu kodu.

Przykład programu przed wdrożeniem SRP

public class Assistant {
    public int retirementAge = 65;
    public int age;

    public Assistant(int age) {
        this.age = age;
    }

    public void HandleEmployee() {
        System.out.println("Logging data...");
        System.out.println(this.retirementAge - this.age);
    }
}

Klasa Assistant w powyższym kodzie ma dwie funkcje: logowanie danych, obliczanie ile lat zostało do emerytury. Zgodnie z zasadą SRP, te odpowiedzialności powinny być rozdzielone. Proponuje utworzyć trzy klasy: Assistant, FinancesAssistant, Logger.

Kod po zastosowaniu zasady SRP

public class Assistant {
    public FinancesAssistant financesAssistant;
    public Logger logger;

   public Assistant(int age) {
       this.financesAssistant = new FinancesAssistant(30);
       this.logger = new Logger();
   }

   public void HandleEmployee() {
       this.logger.Log();
       this.financesAssistant.Calculate();
   }
}
public class FinancesAssistant {
    public int retirementAge = 65;
    public int age;

    public FinancesAssistant(int age) {
        this.age = age;
    }

    public void Calculate() {
        System.out.println(this.retirementAge - this.age);
    }
}
public class Logger {
    public void Log() {
        System.out.println("Logging data...");
    }
}

Podsumowanie

Dzięki rozdzieleniu odpowiedzialności każda klasa ma teraz jeden jasno określony cel. Taki kod jest łatwiejszy do testowania, modyfikowania i utrzymania w dłuższej perspektywie. To właśnie jest sedno zasady pojedynczej odpowiedzialności

Tagi: Brak tagów

Add a Comment

Your email address will not be published. Required fields are marked *