1. Zasada Pojedynczej Odpowiedzialności

SOLID to zestaw zasad projektowania oprogramowania, które pomagają tworzyć bardziej elastyczne, skalowalne i zrozumiałe systemy.

Zasada Pojedynczej Odpowiedzialności
(Single Responsibility Principle, SRP)

Zasada ta mówi, że klasa powinna mieć tylko jeden powód do zmiany, czyli powinna mieć tylko jedną odpowiedzialność.

W poniższym przykładzie klasa DataProcessor łamie zasadę pojedynczej odpowiedzialności, ponieważ ma zarówno metodę saveToFile do zapisu danych do pliku, jak i displayData do wyświetlania danych.
Java
// Klasa łamiąca zasadę SRP
class DataProcessor {
    private String data;

    public DataProcessor(String data) {
        this.data = data;
    }

    public void saveToFile(String filename) {
        // logika zapisu do pliku
        System.out.println("Data saved to " + filename);
    }

    public void displayData() {
        // logika wyświetlania danych
        System.out.println("Data: " + data);
    }
}

public class Main {
    public static void main(String[] args) {
        // Użycie klasy łamiącej zasadę SRP
        DataProcessor dataProcessor = new DataProcessor("Some data");
        dataProcessor.saveToFile("output.txt");
        dataProcessor.displayData();
    }
}

Aby naprawić to naruszenie SRP, możemy rozdzielić te dwie odpowiedzialności do dwóch oddzielnych klas:

Java
// Klasa do zapisu danych do pliku
class DataSaver {
    public void saveToFile(String data, String filename) {
        // logika zapisu do pliku
        System.out.println("Data saved to " + filename);
    }
}

// Klasa do wyświetlania danych
class DataDisplayer {
    public void displayData(String data) {
        // logika wyświetlania danych
        System.out.println("Data: " + data);
    }
}

public class Main {
    public static void main(String[] args) {
        // Poprawione użycie zasady SRP
        DataSaver dataSaver = new DataSaver();
        dataSaver.saveToFile("Some data", "output.txt");

        DataDisplayer dataDisplayer = new DataDisplayer();
        dataDisplayer.displayData("Some data");
    }
}

Teraz mamy dwie osobne klasy, z których każda ma jedną odpowiedzialność: DataSaver do zapisu danych do pliku i DataDisplayer do wyświetlania danych.

To lepiej spełnia zasadę pojedynczej odpowiedzialności.

Scroll to Top