Zasady SOLID – (S – single responsibility principle) – Zasada jednej odpowiedzialności

Zasada jednej odpowiedzialności (ang. SRP – single responsibility principle) określa powód istnienia klasy. Ma ona swój jeden cel w „życiu” i nigdy nie powinno się to zmieniać.

Przykład programu przed zastosowaniem zasady SRP:

public class Employee {
private String name;
private String position;
private double salary;

public Employee(String name, String position, double salary) {
this.name = name;
this.position = position;
this.salary = salary;
}

public void calculateTax() {
// Logika obliczania podatku
double tax = 0.2 * salary;
System.out.println("Tax for " + name + ": $" + tax);
}

public void generatePaycheck() {
// Logika generowania wypłaty
System.out.println("Paycheck for " + name + " (" + position + "): $" + salary);
}
}

Przykład programu po zastosowaniem zasady SRP:

public class Employee {
    private String name;
    private String position;
    private double salary;

    public Employee(String name, String position, double salary) {
        this.name = name;
        this.position = position;
        this.salary = salary;
    }

    // Gettery i settery (do zarządzania danymi pracownika)

    // Inne metody związane z pracownikiem, jeśli to konieczne
}
public class TaxCalculator {
    public static void calculateTax(Employee employee) {
        // Logika obliczania podatku
        double tax = 0.2 * employee.getSalary();
        System.out.println("Tax for " + employee.getName() + ": $" + tax);
    }
}
public class PayrollSystem {
    public static void generatePaycheck(Employee employee) {
        // Logika generowania wypłaty
        System.out.println("Paycheck for " + employee.getName() + " (" + employee.getPosition() + "): $" + employee.getSalary());
    }
}

W tym przypadku klasa Employee zajmuje się tylko przechowywaniem informacji o pracowniku, a klasy TaxCalculator i PayrollSystem są odpowiedzialne za obliczanie podatku i generowanie wypłaty. To oddziela odpowiedzialności i spełnia zasadę Single Responsibility Principle.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *