SOLID- INTERFACE SEGREGATION

Zasada segregacji interfejsów mówi o tym, by wszystkie metody z interfejsów były używane w klasach, w których ten interfejs jest implementowany. Co za tym idzie, interfejs powinien mieć jak najmniej metod.

W poniższym przykładzie został stworzony interfejs MusicPlayer, który ma 2 metody playMP3 oraz playCD. Są też 3 klasy, każda z nich implementuje interfejs MusicPlayer, jendak 2 z nich używają tylko jednej metody.

public interface MusicPlayer {
    public void playMP3();
    public void playCD();
}

public class MP3Player implements MusicPlayer{
    public void playMP3(){
        //playMP3
    }
}

public class CDPlayer implements MusicPlayer{
    public void playCD(){
        //playCD
    }
}

public class MicroMusicSystem implements MusicPlayer{
    public void playCD(){
        //playCD
    }

    public void playMP3(){
        //playMP3
    }
}

Można stwierdzić wiec, że interfejs jest zbyt ogólny, gdyż niektóre metody dla poszczególnych klas są nieprzydatne, nie mają zastosowania. By kod był zgodny z zasadą segregacji interfejsów, należy go podzielić na 2 interfejsy, w którym będzie po jednej metodzie.

public interface MP3playable {
    public void playMP3();
}

public interface CDplayable {
    public void playCD();
}

public class MP3Player implements MP3playable {
    public void playMP3(){
        //playMP3
    }
}

public class CDPlayer implements CDplayable {
    public void playCD(){
        //playCD
    }
}

public class MicroMusicSystem implements MP3playable, CDplayable {
    public void playCD(){
        //playCD
    }

    public void playMP3(){
        //playMP3
    }
}

W poprawionym kodzie widzimy, że klasy zawsze wykorzystują wszystkie metody z implementowanych interfejsów, więc nasz kod jest bardziej przejrzysty, interfejsy bardziej konkretne, co jest zgodne z omawianą zasadą.

Dodaj komentarz