Forstå grænseflader
En grænseflade er som en to-do liste eller en kontrakt. Det beskriver, hvilke job der skal udføres, uden at angive, hvordan disse job skal udføres. Grænsefladernes kontrakt karakter gør det muligt for flere klasser at udføre de samme opgaver på deres egne unikke måder.
Grænseflader er som en kontrakt
Hver af dem - bilen, personen og hesten - har sin egen unikke måde at bevæge sig på. En grænseflade kan bruges til at definere kontraktkravet "Du skal kunne flytte", men grænsefladen definerer ikke, hvordan du flytter.
Dele af en grænseflade
I C#angiver en grænseflade de påkrævede egenskaber og metoder. En grænseflade indeholder ikke nogen data i sig selv, men den angiver, hvilken type oplysninger der skal angives via egenskaber. I grænsefladen "Flyt" kan 'X' og 'Y' f.eks. være egenskaber, der repræsenterer placeringskoordinater. Disse egenskaber gør det muligt at hente eller ændre deres værdier.
Derudover definerer grænseflader metoder, som er handlinger, der kan udføres. De leverer dog ikke implementeringen for disse metoder. Grænsefladen "Flyt" kan f.eks. omfatte en kontrakt, der kræver en "Dance"-metode. Men hvad sker der egentlig, når "Dance"-metoden kaldes af de objekter, der bruger "Move"-interfacet (en bil, en person eller en hest)?
Brug en grænseflade
For at bruge et interface skal en klasse som Car, Person, eller Horse fra "Move"-eksemplet give sine egne definitioner for hver egenskab og metode, som interfacet angiver. Bilen skal f.eks. forstå, hvordan alle de opgaver, der er angivet i grænsefladen, udføres. Denne proces med at indføre en grænseflade af bilen er kendt som "implementering" grænsefladen. I denne proces accepterer bilen at følge den "kontrakt", der er fastsat af grænsefladen, og definerer sine egne unikke måder at udføre opgaverne på, f.eks. at flytte ved at "køre". På samme måde ville personen og hesten også implementere grænsefladen, der hver især definerer deres egne unikke måder at 'flytte' såsom "kør" eller "galop".
Overvej klasserne "Person" og "Hest". Begge implementerer grænsefladen "Flyt", og det er ansvaret for klasserne "Person" og "Hest" for at definere måder at "Flytte".
I klassen "Person" kan 'Flyt' betyde at gå, løbe eller løbe. I klassen "Hest" kan 'Flyt' betyde at gå, trave eller galoppere. Selvom de bevæger sig på forskellige måder, opfylder begge klasser jobkravet 'Flyt' fra grænsefladen "Flyt".
Hvorfor bruge en grænseflade?
De egenskaber, der er defineret af en grænseflade, er nyttige, fordi de sikrer, at alle klasser håndterer oplysninger på samme måde. En grænseflade gør dine relaterede klasser mere ensartede og nemmere at arbejde med. Så længe de alle bruger den samme grænseflade, kan du skrive instruktioner, der fungerer sammen med alle mulige forskellige klasser.
Implementering af en grænseflade er som at signere en kontrakt og acceptere at udføre visse job, der er skitseret af grænsefladen. Den "kontrakt" håndhævelse leveres af grænseflader hjælpemidler i bygning komplekse klasser, der let kan vedligeholdes og opdateres.