Autor wpisu: sokzzuka, dodany: 01.06.2010 00:15, tagi: php
Wielokrotnie czytając wpisy na rozmaitych blogach, zauważyłem w komentarzach niezrozumienie idei interfejsu. Jest to dość ważny koncept i poniekąd klucz do implementacji większości wzorców projektowych.
Czy to ptak ? Czy samolot ? Nie ! To interfejs !
Interfejs to przede wszystkim dokumentacja. Interfejs opisuje role jaką ma odegrać pewien twór.
Najprościej jest to sobie wyobrazić na prostym przykładzie gniazdka elektrycznego. Specyfikując problem transferu prądu pomiędzy dwoma elementami sieci elektrycznej definiujemy interfejs “podłączalny”. Zawiera on opis żeńskiego gniazdka elektrycznego w rodzaju: “Gniazdko składa się z dwóch otworów oddalonych od siebie o X centymetrów zakończonych metalowymi końcówkami, napięcie wynosi 230V a częstotliwość prądu 50 Hz”.
Dzięki temu, że zdefiniowaliśmy interfejs “podłączalny” i jest on powszechnym standardem w Europie to gdziekolwiek byśmy nie pojechali na wakacje w UE, będziemy mogli korzystać z naszych urządzeń elektrycznych. Co więcej, dzięki temu, że mamy jasno określony interfejs, to w przypadku, gdy np posiadamy urządzenie, które nie spełnia tego interfejsu, a chcemy je podpiąć do prądu, możemy zbudować adapter, który umożliwi dostosowanie się obu interfejsów ( urządzenia i gniazdka ) do siebie.
Wspomniałem wcześniej, że interfejs definiuje role obiektów, przyjrzyjmy się temu bliżej. Załóżmy, że konstruujemy telewizor. Jako producentowi telewizora, zależy nam na tym, żeby można było go podłączyć do prądu oraz obsługiwać z pilota.
Nasz telewizor będzie implementował więc dwa interfejsy “podłączalny” i “pilotowalny”, dzięki którym będzie spełniał oczekiwania nasze i klientów .
Z powyższego opisu widać, że generalnie interfejs określa protokół komunikacyjny między dwoma obiektami. Tak też należy go stosować. Dzięki interfejsom, nie musimy martwić się o implementacje. W końcu co to byłby za świat, gdyby tylko jedna firma produkowała gniazdka elektryczne.
Mam nadzieje, że powyższy artykuł w sposób przystępny przybliżył zagadnienie interfejsów. Jeżeli mielibyście jakieś pytania zapraszam do wpisywania ich w komentarzach