SOLID – część 4. Zasada Segregacji Interfejsów

SOLID – mnemonik, który mówi jak pisać poprawnie programy w językach obiektowych. Podążanie za tymi zasadami znacznie poprawia czytelność i możliwość utrzymywania kodu. Część czwarta: Zasada Segregacji Interfejsów.

Moim zdaniem jest to najprostsza zasada z wszystkich pięciu możliwych do wyjaśnienia. Spójrzmy na definicję Interface Segregation Principle.

Klasy nie powinny być zmuszane do zależności od metod, których nie używają.

Język zrozumiały. Ale co to może oznaczać w rzeczywistości. Spójrzmy na nasze karabiny:

SzybkoszelajcyKarabin oraz CelnyKarabin implementują interfejs IStrzelajaceILadujacy, który zawiera dwie definicje metod:

Do karabinów nie ładuje się pocisków. Pociski w moim przekonaniu to coś dużego czym można zrobić dużo bałaganu w okolicy. Dlaczego nasze karabiny mają implementować metodę LadujPocisk? Co mówi ISP?

Klasy nie powinny być zmuszane do zależności od metod, których nie używają.

Karabiny łamią zasadę segregacji interfejsów. Można to w bardzo prosty sposób naprawić. W tym celu stwórzmy dwa mniejsze interfejsy.

Robiliśmy interface IStrzelajaceILadujace na dwa mniejsze: IStrzelajace oraz ILadujace. Poprawmy kod tak, aby nasze karabiny implementowały tylko IStrzelajce.

W ten sposób spełniamy zasadę ISP. Nasze karabiny implementują tylko te metody, które używają. Dzięki temu na przykład nie będziemy już przez pomyłkę na karabinie wykonywać metody LadujPocisk.
Ale musimy troszkę poprawić nasz kod w innych miejscach, aby mógł się komplikować.

I gotowe.

SOLID – Zasada Segregacji Interfejsów. Linki.

CodeProject – przykład
UWR – Wykład z przykładem
Wysokopoziomowe metaforyczne wyjaśnienie ISP

Powered by: Wordpress