Interface (designmønster)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 1. juli 2018; checks kræver 2 redigeringer .
Interface
Interface
Beskrevet i Design Patterns Ikke

Interface ( eng.  interface ) er et grundlæggende designmønster , som er en generel metode til at strukturere computerprogrammer for at gøre dem lettere at forstå. Generelt er en grænseflade  en klasse , der giver en enkel eller mere programspecifik måde for programmøren at få adgang til andre klasser.

En grænseflade kan indeholde et sæt objekter og give enkel funktionalitet på højt niveau for programmøren (f.eks . Facademønster ); det kan give en renere eller mere specifik måde at bruge komplekse klasser (" indpakningsklasse "); den kan bruges som en " lim " mellem to forskellige API'er ( mønsteradapter ); og til mange andre formål.

Andre typer grænseflademønstre er: Delegationsmønster , Linkermønster og Bromønster .

Eksempler

C++

I modsætning til Java, hvor grænseflader er almindelige, bruges dette mønster ikke ofte i C++. Men nogle gange kan det hjælpe med at reducere afhængigheder. For biblioteker, der bruger wrapper-klasser til at skjule interne implementeringsdetaljer, kan "interface"-mønsteret forbedre kodelæsbarheden.

Da Facade-klassen er en biblioteksgrænseflade, skal dens h-fil være tilgængelig for biblioteksbrugeren. Derfor skal den placeres i bibliotekets include-mappe. Men denne Facade-klasse har nok brug for nogle egenskaber fra andre klasser i biblioteket. Derfor skal dens h-fil inkludere h-filer fra andre klasser. Det betyder, at disse filer også skal være tilgængelige, så de også skal placeres i bibliotekets include-mappe. Og dette overtræder strategien med kun at definere en biblioteksgrænseflade i mappen include. Denne vanskelighed kan løses ved at bruge grænseflademønsteret.

For at implementere en grænseflade til en klasse , Askal du implementere en klasse A_Interface, der vil definere klassens offentlige metoder Asom abstrakte funktioner. Klassen Askal arves fra A_Interface. Glem ikke at erklære A_Interface-destruktoren som virtuel!

I dette tilfælde kan klassens header-fil (.h-fil) Afindes i bibliotekets kildemapper, mens klassens header-fil A_Interfaceforbliver i include-mappen.

Da grænsefladeklassen er abstrakt, og klassen, der implementerer grænsefladen, ikke kendes uden for biblioteket, Akræves der en fabrik for at oprette klasseobjekter. Det giver mening at skabe en klassemetode, A_Interfaceder fungerer som en fabriksmetode.

Se også

Litteratur