Jest to klasyczny przykład tego, jak ludzie decydują się na naruszenie zasady substytucji Liskowa. Zdecydowanie odradzam, ale zachęciłbym do ewentualnie innego rozwiązania:
- Być może klasa, którą piszesz, nie zapewnia funkcjonalności zalecanej przez interfejs, jeśli nie wykorzystuje wszystkich elementów interfejsu.
- Alternatywnie, interfejs ten może robić wiele rzeczy i może być rozdzielony zgodnie z zasadą segregacji interfejsu.
Jeśli pierwszy przypadek dotyczy Ciebie, po prostu nie implementuj interfejsu dla tej klasy. Potraktujcie to jak gniazdka elektrycznego, gdzie dziura ziemia jest niepotrzebny, więc nie rzeczywiście dołączyć do ziemi. Nie podłączasz niczego z uziemieniem i nic wielkiego! Ale gdy tylko użyjesz czegoś, co wymaga gruntu - możesz być w spektakularnej porażce. Lepiej nie dziurawić fałszywej dziury. Więc jeśli twoja klasa nie robi właściwie tego, co zamierza interfejs, nie implementuj interfejsu.
Oto kilka szybkich bitów z wikipedii:
Zasadę podstawienia Liskowa można po prostu sformułować w następujący sposób: „Nie wzmacniaj warunków wstępnych i nie osłabiaj warunków wstępnych”.
Mówiąc bardziej formalnie, zasada podstawienia Liskowa (LSP) jest szczególną definicją relacji podtytułu, zwanej (silnym) podtypem behawioralnym, która została początkowo wprowadzona przez Barbarę Liskov w przemówieniu na konferencji w 1987 r. Zatytułowanym Abstrakcja danych i hierarchia. Jest to relacja semantyczna, a nie tylko syntaktyczna, ponieważ ma ona na celu zagwarantowanie semantycznej interoperacyjności typów w hierarchii , [...]
Aby uzyskać semantyczną interoperacyjność i zastępowalność między różnymi realizacjami tych samych umów - potrzebujesz ich wszystkich, aby zobowiązały się do tych samych zachowań.
Zasada segregacji interfejsów mówi, że interfejsy powinny być podzielone na spójne zestawy, tak że nie potrzebujesz interfejsu, który robi wiele różnych czynności, gdy potrzebujesz tylko jednego obiektu. Pomyśl jeszcze raz o interfejsie gniazda elektrycznego, może również mieć termostat, ale utrudniłoby to zainstalowanie gniazda elektrycznego i może utrudnić korzystanie z niego do celów innych niż ogrzewanie. Podobnie jak gniazdko elektryczne z termostatem, duże interfejsy są trudne do wdrożenia i trudne w użyciu.
Zasada segregacji interfejsów (ISP) stanowi, że żaden klient nie powinien być zmuszany do polegania na metodach, których nie używa. [1] ISP dzieli bardzo duże interfejsy na mniejsze i bardziej szczegółowe, dzięki czemu klienci będą musieli wiedzieć tylko o interesujących ich metodach.