"Helló, Amigo! Én vagyok az – már megint. Szeretnék egy másik nézőpontot adni az interfészekről. Látod, egy osztály legtöbbször egy adott objektum modellje. Ezzel szemben az interfészek inkább egy objektum képességeihez ill. a szerepeket, nem pedig magát a tárgyat."
Például az olyan dolgokat, mint az autók, kerékpárok, motorkerékpárok és kerekek a legjobban osztályokként és tárgyakként ábrázolják. De az olyan képességeik, mint a „mozoghatok”, „tudok embereket szállítani” és „ tudok parkolni”, jobban ábrázolhatók interfészként. Nézze meg ezt a példát:
Java kód | Leírás |
---|---|
|
Megfelel a mozgásképességnek. |
|
Megfelel a mozgásképességnek. |
|
Megfelel a rakomány szállításának képességének. |
|
Egy "kerék" osztály. Mozgási képességgel rendelkezik. |
|
Egy "autó" osztály. Képes mozogni, személy által vezetni és rakományt szállítani. |
|
Egy „gördeszka” osztály. Képes mozogni és egy személy irányítani. |
Az interfészek nagyban leegyszerűsítik a programozó életét. A programok gyakran több ezer objektumot, több száz osztályt és mindössze néhány tucat interfészt (szerepkört) tartalmaznak. Kevés a szerepkör, de sokféleképpen kombinálhatók (osztályok).
A lényeg az, hogy nem kell kódot írnod, amely meghatározza az interakciót minden más osztállyal. Mindössze annyit kell tennie, hogy interakcióba lép a szerepekkel (interfészek).
Képzeld el, hogy robotépítő vagy. Több tucat alárendelt robotja van, és mindegyiknek több képessége is lehet. Tegyük fel, hogy sürgősen be kell fejeznie egy fal építését. Csak vedd az összes olyan robotot, amelyik képes "építeni", és mondd meg nekik, hogy építsenek falat. Nem igazán érdekel, hogy melyik robot csinálja. Legyen ez egy robotos öntözőkanna. Ha tudja, hogyan kell építeni, hagyja, hogy építsen.Így nézne ki kódban:
Java kód | Leírás |
---|---|
|
Képes "falat építeni". Megérti a «falat építs» parancsot (megvan a megfelelő módszere). |
|
Robotok, amelyek rendelkeznek ezzel a képességgel/készséggel.
Egy öntözőkanna nem tud falat építeni (nem valósítja meg a WallBuilder interfészt). |
|
Hogyan adjuk ki a parancsot a fal építésére? |
"Ez elképesztően érdekes. Álmomban sem gondoltam volna, hogy az interfészek ilyen érdekes téma lehet."
"És aztán néhány! A polimorfizmussal együtt teljesen észbontó."
GO TO FULL VERSION