et programvaregrensesnitt kan referere til et bredt spekter av forskjellige typer grensesnitt på forskjellige «nivåer»: et operativsystem kan samhandle med deler av maskinvaren. Programmer eller programmer som kjører på operativsystemet, må kanskje samhandle via datastrømmer, filtre og rørledninger; og i objektorienterte programmer må objekter i et program kanskje samhandle via metoder.
I praksisrediger
et sentralt prinsipp for design er å forby tilgang til alle ressurser som standard, slik at tilgang bare gjennom veldefinerte inngangspunkter, dvs. grensesnitt. Programvaregrensesnitt gir tilgang til dataressurser(for eksempel minne, CPU, lagring, etc. direkte tilgang (dvs. ikke gjennom godt utformede grensesnitt) til slike ressurser av programvare kan ha store konsekvenser-noen ganger katastrofale seg-for funksjonalitet og stabilitet.Grensesnitt mellom programvarekomponenter kan gi konstanter, datatyper, typer prosedyrer, unntaksspesifikasjoner og metodesignaturer. Noen ganger er offentlige variabler også definert som en del av et grensesnitt.grensesnittet Til en programvaremodul A er bevisst definert separat fra implementeringen av den modulen. Sistnevnte inneholder den faktiske koden for prosedyrene og metodene beskrevet i grensesnittet, samt andre «private» variabler, prosedyrer, etc. En annen programvaremodul B, for eksempel klienten Til A, som samhandler Med A, er tvunget til å gjøre det bare gjennom det publiserte grensesnittet. En praktisk fordel med denne ordningen er at erstatning av implementeringen Av a med en annen implementering av det samme grensesnittet ikke skal føre Til at B mislykkes-hvordan a internt oppfyller kravene til grensesnittet er ikke relevant For B, som bare er opptatt av grensesnittets spesifikasjoner. (Se Også Liskov substitusjonsprinsipp.)
på objektorienterte språkrediger
Stack
» kan definere to metoder: push()
og pop()
. Den kan implementeres på forskjellige måter, for eksempel FastStack
og GenericStack
—den første er rask, arbeider med en datastruktur av fast størrelse, og den andre bruker en datastruktur som kan endres, men på bekostning av noe lavere hastighet.selv om grensesnitt kan inneholde mange metoder, kan de bare inneholde en eller ingen i det hele tatt. For Eksempel Definerer Java-språket grensesnittet Readable
som har singelen read()
– metoden; ulike implementeringer brukes til forskjellige formål, inkludert BufferedReader
FileReader
InputStreamReader
PipedReader
og StringReader
. Markørgrensesnitt somSerializable
inneholder ingen metoder i det hele tatt og tjener til å gi kjøretidsinformasjon til generisk behandling ved Hjelp Av Refleksjon.
Programmering til grensesnittetrediger
bruken av grensesnitt tillater en programmeringsstil kalt programmering til grensesnittet. Ideen bak denne tilnærmingen er å basere programmeringslogikken på grensesnittene til objektene som brukes, i stedet for på interne implementeringsdetaljer. Programmering til grensesnittet reduserer avhengigheten av implementeringsspesifikasjoner og gjør koden mer gjenbrukbar.
Å Skyve denne ideen til det ekstreme, inversjon av kontroll forlater konteksten for å injisere koden med de spesifikke implementeringene av grensesnittet som skal brukes til å utføre arbeidet.