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.
