SOLID – #1 Zasada jednej odpowiedzialności

SOLID jest to zestaw zasad dobrego programowania obiektowego. Stanowią fundament projektowania oprogramowania które mogą pomóc programistom tworzyć bardziej zorganizowane, elastyczne i łatwe w utrzymaniu systemy.

Druga zasada SOLID jest to zasada jednej odpowiedzialności (ang. single responsibility) sformułowana przez Robert C.Martin (Wujek Bob).

Jaka jest Definicja ?

Zgodnie z zasadą jednej odpowiedzialności każda klasa powinna mieć tylko jedną odpowiedzialność a więc tylko jeden powód do jej modyfikacji. W związku z tym, każda klasa powinna mieć tylko jedno, jasno zdefiniowane zadanie i odpowiadać za tylko jedną funkcję w programie. Natomiast każda zmiana powinna wynikać ze zmian w tym konkretnym zadaniu.

Jak to osiągnąć?

Przy projektowaniu klasy należy zidentyfikować jedną odpowiedzialność – jedno zadanie za które będzie odpowiedzialna.

Poniższy przykład klasy Adres łamie zasadę jednej odpowiedzialności ponieważ klasa Adres ma zadeklarowane dwa zadania: wyświetlanie adresu oraz weryfikację kodu pocztowego.

public class Adres {
    public String miasto;
    public String ulica;
    public String kodPocztowy;
    
    public void WyświetlAdres(){
    ...
    }
    
    private boolean WeryfikacjaKoduPocztowego(String kodPocztowy){
    ...
    }
    
}

Uwzględniając zasadę jednej odpowiedzialności, należy podzielić tę klasę na dwie osobne klasy. W taki sposób, aby każda klasa odpowiadała za jedną konkretną funkcję.

public class Adres {
    public String miasto;
    public String ulica;
    public String kodPocztowy;
    
    public WyświetlAdres(){
    ...
    return true;
    }
}

public class Weryfikacja {
    public boolean WeryfikacjaKoduPocztowego(String kodPocztowy){
    ...
    return true;
    }
}