a szoftver interfész Különböző típusú interfészekre utalhat különböző “szinteken”: az operációs rendszer kapcsolódhat hardverdarabokhoz. Alkalmazások vagy programok fut az operációs rendszer, lehet, hogy kölcsönhatásba lépnek keresztül adatfolyamok, szűrők, csővezetékek; valamint az objektum-orientált programok, tárgyak egy alkalmazáson belül lehet, hogy kölcsönhatásba lépnek keresztül módszerek.
a gyakorlatban
a tervezés egyik fő elve az, hogy alapértelmezés szerint megtiltják az összes erőforráshoz való hozzáférést, lehetővé téve a hozzáférést csak jól meghatározott belépési pontokon, azaz interfészeken keresztül. A szoftver interfészek hozzáférést biztosítanak a számítógépes erőforrásokhoz (például memória, CPU, tárolás stb.) az alapul szolgáló számítógépes rendszer; az ilyen erőforrásokhoz szoftveres Közvetlen hozzáférés (azaz nem jól megtervezett interfészeken keresztül) jelentős-néha katasztrofális—következményekkel járhat a funkcionalitás és a stabilitás szempontjából.
a szoftverkomponensek közötti interfészek konstansokat, adattípusokat, eljárástípusokat, kivételspecifikációkat és módszerleírásokat biztosíthatnak. Néha a nyilvános változókat egy interfész részeként is definiálják.
az a szoftvermodul interfészét szándékosan külön definiálják a modul megvalósításától. Ez utóbbi tartalmazza az interfészben leírt eljárások, módszerek tényleges kódját, valamint más “privát” változókat, eljárásokat stb. Egy másik B szoftvermodul, például az a kliens, amely kölcsönhatásba lép az A-val, erre csak a közzétett felületen keresztül kényszerül. Egy gyakorlati előnye, hogy ez a megállapodás, hogy a cseréje végrehajtását Egy másik végrehajtása ugyanazon a felületen nem, mert a B sikerül—, hogy Egy belső megfelel az interfész nem releváns, B, amely csak az érintett a műszaki adatok a felület. (Lásd még Liskov helyettesítési elv.)
objektumorientált nyelvekszerkesztés
néhány objektum-orientált nyelvben, különösen a teljes többszörös öröklés nélkül, az interface kifejezés egy absztrakt típus meghatározására szolgál, amely nem tartalmaz adatokat, de a viselkedéseket metódus aláírásként határozza meg. Azt mondják, hogy egy osztály, amelynek kódja és adatai vannak az interfésznek megfelelő összes módszerhez, és ezt kijelentik, végrehajtja ezt az interfészt. Továbbá, még az egy öröklési nyelvekben is, több interfészt lehet megvalósítani, így egyszerre különböző típusúak is lehetnek.
Az interfész tehát típusdefiníció; bárhol, ahol egy objektum cserélhető (például egy függvény vagy módszerhívás esetén), a kicserélendő objektum típusa meghatározható az egyik megvalósított interfészében vagy alaposztályában, nem pedig az adott osztály megadásával. Ez a megközelítés azt jelenti, hogy minden olyan osztály, amely megvalósítja ezt a felületet lehet használni. Például egy próbabábu megvalósítás használható a fejlesztés előrehaladásának lehetővé tételére, mielőtt a végleges végrehajtás rendelkezésre állna. Egy másik esetben a tesztelés során hamis vagy hamis végrehajtás helyettesíthető. Az ilyen csonk implementációkat a fejlesztési folyamat későbbi szakaszában valódi kód váltja fel.
általában egy interfészen definiált módszer nem tartalmaz kódot, így önmagában nem hívható; nem absztrakt kóddal kell végrehajtani, hogy futtatható legyen, amikor meghívják. Egy “Stack
” nevű interfész két módszert definiálhat: push()
és pop()
. Különböző módon valósítható meg, például: FastStack
és GenericStack
—az első gyors, rögzített méretű adatszerkezettel dolgozik, a második pedig átméretezhető adatszerkezetet használ, de valamivel alacsonyabb sebességgel.
bár az interfészek számos módszert tartalmazhatnak, ezek csak egy vagy akár egyáltalán nem is tartalmazhatnak. Például a Java nyelv meghatározza a Readable
interfészt, amelynek egyetlen read()
módszere van; különböző implementációkat használnak különböző célokra, beleértve a BufferedReader
FileReader
InputStreamReader
PipedReader
és StringReader
div>. Az olyan jelölő interfészek, mint a Serializable
, egyáltalán nem tartalmaznak módszereket, és arra szolgálnak, hogy futásidejű információkat szolgáltassanak az Általános feldolgozáshoz reflexió segítségével.
programozás az interfészre
az interfészek használata lehetővé teszi az interfészre programozás nevű programozási stílust. Ennek a megközelítésnek az a lényege, hogy a programozási logikát a felhasznált objektumok interfészeire alapozzuk, nem pedig a belső implementáció részleteire. Az interfészre történő programozás csökkenti a végrehajtás sajátosságaitól való függőséget, és újrafelhasználhatóvá teszi a kódot.
ezt az ötletet a legszélsőségesebbre tolva a vezérlés inverziója elhagyja a kontextust, hogy a kódot a munka elvégzéséhez használt felület specifikus implementációival adja be.