Spis Treści
Definicja
Przedostatnim już artykułem dotyczącym SOLID w programowaniu obiektowym będzie omówienie zasady segregacji interfejsów. Zasada ta jest prosta do zrozumienia i prosta do stosowania więc bez zbędnej zwłoki zaczynamy:
Zamiast stosować jeden duży interfejs z wieloma zachowaniami stosuj wiele mniejszych interfejsów
Myślę, że intuicyjnie domyślamy się dlaczego powinno się stosować powyższą zasadę, nie mniej jednak zwerbalizujmy nasze myśli. Stosowanie wielu małych interfejsów daje nam dużą elastyczność w budowaniu klas jednocześnie pozbawiając nas konieczności implementowania metod, które akurat nie są nam potrzebne.
Drobny przykład
Stwórzmy klasy, które będą zajmowały się obsługą plików. Rozpocznijmy od stworzenia interfejsu zawierającego 2 metody do odczytu i zapisu pliku oraz 2 klasy obsługujące różne typy plików: tylko do odczytu oraz z możliwością zapisu.
public interface File {
void readFile();
void writeFile();
}
public class ReadWriteFile implements File {
@Override
public void readFile() {
//read file code here
}
@Override
public void writeFile() {
//write file code here
}
}
public class ReadOnlyFile implements File {
@Override
public void readFile() {
//read file code here
}
@Override
public void writeFile() {
//I don't need write file method here!!!
}
}
Jak z pewnością zauważyliście nasz interfejs w obecnej postaci kiepsko nadaję się do zaimplementowania w przypadku pliku tylko do odczytu. Lepiej wyglądałoby to tak:
public interface ReadFile {
void readFile();
}
public interface WriteFile {
void writeFile();
}
public class ReadOnlyFile implements ReadFile {
@Override
public void readFile() {
//read file code here
}
}
public class ReadWriteFile implements
ReadFile, WriteFile {
@Override
public void readFile() {
//read file code here
}
@Override
public void writeFile() {
//write file code here
}
}
Myślę, że powyższy przykład wystarczająco nakreśla istotę tej zasady i niepotrzebne jest dalsze wgryzanie się w ten temat. Jeśli jednak jest inaczej zapraszam do komentowania – z chęcią odpowiem.
Pingback: SOLID - podstawa programowania obiektowego – Wojciech Siwek
Możliwość komentowania została wyłączona.