Warum verwenden wir die Schnittstelle? Ist es nur zur Standardisierung? [abgeschlossen

StackOverflow https://stackoverflow.com/questions/2026054

  •  19-09-2019
  •  | 
  •  

Frage

Warum verwenden wir die Schnittstelle?

Ist es nur zur Standardisierung?

War es hilfreich?

Lösung

Zwecke von Schnittstellen

  • Erstellen Sie locker gekoppelte Software
  • Unterstützung Entwurf durch Vertrag (Ein Implementierer muss die gesamte Schnittstelle bereitstellen)
  • Steckbare Software zulassen
  • Lassen Sie verschiedene Objekte leicht interagieren
  • Implementierungsdetails von Klassen voneinander ausblenden
  • Erleichterung der Wiederverwendung von Software

Analogie 1: Ähnlich wie beim US -Space Shuttle können russische Sojuz -Raumschiffe und chinesische Shenzhou 5 alle zur internationalen Raumstation anlegen, weil sie dieselbe Docking -Schnittstelle implementieren. (Dies ist nur ein Beispiel - ich weiß nicht, ob es im wirklichen Leben wahr ist. Lassen Sie uns jedoch unseren Unglauben für ein Beispiel aussetzen.)

Analogie 2: Wie Sie verschiedene Computermonitore an Ihren Heimcomputer anschließen können. Sie können einen wandgrößigen Fernseher, eine alte CRT (die dicke Art), einen 20-Zoll-Flachbildschirm oder eine Braille-Maschine für Blinde zu "sehen" durch Berührung anschließen. Unter diesen verschiedenen/verschiedenen Geräten und Ihrem besteht die Kompatibilität Computer, weil sie alle auf Schnittstellenstandards einverstanden sind.

Details zu C# -Schroben - Mit C#/OOP-Schnittstellen machen Sie dasselbe, aber in der unsichtbaren/virtuellen Welt.

Sie haben Recht Standardisierung, aber auch Flexibilität, Skalierbarkeit, Erweiterbarkeit, Wartbarkeit, Wiederverwendbarkeit, Testbarkeit und Energie.

(Je mehr Sie Software -Schnittstellen verwenden, desto mehr werden diese "Buzz -Wörter" verstanden. Und betrachten immer Schnittstellen in der realen Welt, weil sie uns gleich gut gemacht haben.)

Andere Tipps

Eine Schnittstelle wird verwendet, um zu beschreiben, was für eine implementierte Sache kann. Sie haben also die Möglichkeit, mehrere Objekte zu behandeln, die dieselbe Schnittstelle wie eine Art dieser Schnittstelle implementieren.

Zum Beispiel:

public interface IMyInterface{
    public void DoFirst();
    public int DoSecond();
}


public class A : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blubb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blubb2");
     return 2;  
   }
}

public class B : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blibb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blibb2");  
     return 4;
   }
}

Die Klassen implementieren die Schnittstelle auf verschiedene Weise. Sie können sie jedoch als Imyinterface verwenden. Zum Beispiel:

public static void DoMethodsInInterface(IMyInterface inter){
    inter.DoFirst();
    inter.DoSecond();
}


public static void main(){

   DoMethodsInInterface(new A());
   DoMethodsInInterface(new B());
   //Or use it in a List
   List<IMyInterface> interlist = new List<IMyInterface>();
   interlist.Add(new A());
   interlist.Add(new B());
   foreach(IMyInterface inter in interlist){
      inter.DoFirst();
   }

}

Ich hoffe, das macht ein bisschen klar, warum Schnittstellen nützlich sind.

Es ist für die Schnittstelle :), damit Sie zwischen Zeug schneiden können, ist es nützlich, wenn Sie haben

  • Mehrere Implementierungen derselben Dinge
  • Wenn Sie eine Schnittstelle auf mehrere verschiedene Klassen anwenden, weil Sie eine Konvention benötigen, dass diese Klassen Goonna sind, können Sie einige Dinge machen oder eine Funktionalität haben

Hier ist die hohe Ansicht ...

Schnittstellen spielen eine große Rolle im Konzept von Informationen verstecken sich.

Sie helfen Ihnen im Grunde, das zu verbergen Implementierungsdetails von Ihrer Klasse, damit eine Anrufklasse keine Abhängigkeit von dieser Implementierung hat. Durch die Verwendung von Schnittstellen können Sie die Implementierung ändern, ohne die Anrufklasse zu ändern. Das alles abwechselnd begrenzt die Komplexität von Ihrem Code und machen Sie es einfacher zu pflegen auf Dauer.

Als ich anfing, Schnittstellen zu verstehen, wurden sie mir als "Vertrag, der eine Beschreibung für Ihre Klasse liefert" erklärt. Ich bin mir nicht sicher, ob das Ihnen hilft, aber wenn Sie an eine Schnittstelle für ein Auto denken, könnten Sie das sagen fährt, geht kaputt, und wendet sich. Solange es mich von Punkt A nach Punkt B bringt, muss ich nicht wirklich wissen, wie diese Funktionen implementiert werden.

Der Hauptgrund, warum die Schnittstellen in Sprachen wie C#/Java verwendet werden Was ist das genaue Problem mit mehreren Vererbung?).

Es ist jedoch eine multiple (Schnittstellen-) Implementierung durchzuführen, sodass Klassen auf verschiedene Weise verwendet werden können.

Schnittstellen sind etwas umständlich. Sie unterstützen das Design durch Vertrag, nur indem sie glauben, dass derselbe Name und die implementierte Schnittstelle das gleiche Verhalten bedeuten. Dies funktioniert nur dank der API-Dokumentation, sie muss menschlich überprüft werden. Das macht Schnittstellen zu schwach. Eine Möglichkeit, sich umzugehen, könnte formelle Spezifikationen sein. Andererseits sind Schnittstellen zu stark, zu streng. Sie können Grenzflächen nicht entwickeln, die häufig wiederverwendet werden. Dies wird durch Protokolle gelöst - Mechanismus in dynamischen Sprachen, die Nachrichten senden (Anrufmethoden), und wenn diese Nachricht nicht vom Empfänger unterstützt wird, wird Standard -Rückruf aufgerufen. Betonprotokolle mit Einschränkungen zu haben, wäre besser.

Denken Remoting...

Hier ist ein Client und ein Server beteiligt. Nehmen wir an, sie werden durch das Internet physisch getrennt. Der Client ruft eine Methode auf, deren tatsächliche Ausführung auf dem Server stattfindet. Aus Sicht des Kunden weiß der Client nichts über das Objekt auf dem Server, das die Ausführung ausführt. Es weiß jedoch, welche Methode aufgerufen werden soll. Denn beim Erstellen des Kundenprogramms sind wir nur einer Schnittstelle (oder Vertrag) ausgesetzt. Wir sind nicht dem gesamten Objekt ausgesetzt, das tatsächlich auf dem Server lebt. Versuchen Sie, einige Demo -Apps in .NET -Remoting durchzuführen, und Sie werden den Rest feststellen. Glückliche Programmierung.

Warum verwenden wir Schnittstellen?

Einige Sprachen implementieren polymorphe Methodenaufrufe mit Vtables und verwerfen die meisten Typinformationen, die es schwierig machen nicht Schnittstellen definieren.

Manchmal verwenden wir einfach Schnittstellen, weil das Sprachdesign dies erfordert.

Wenn Sie mit einer Schnittstelle beginnen, können Sie a implementieren Proxy, damit das faule Laden oder Durchführen einiger Überprüfungen beim Aufrufen der Methoden einer konkreten Implementierung.

Die Schnittstelle trennt den Datentyp von der Implementierungslogik.

Die Schnittstelle liefert Prototyp -Modal, das nur Funktionen der Funktionalität eines bestimmten Verhaltens enthält.

Und wenn Sie dieses Verhalten in die Klasse implementieren möchten, müssen Sie diese Schnittstelle in der Klasse implementieren, dann hat die Klasse diese Verhaltensfunktionalität oder es kann mehrere Verhaltensweisen haben.

Weil die Klasse mehrere Schnittstellen implementieren kann.

Wenn jemand anderes wie ich ist und durch Beispiel und Tun lernt und nicht nur eine Erklärung, hier ist ein Code ....

Ich fand diese Implementierung eines neuronalen Netzwerks in C#, einschließlich Projekt -Download, das Schnittstellen auf elegante und nützliche Weise verwendet:

http://www.c-sharpcorner.com/uploadfile/rmcochran/ai_oop_neuralnet06192006090112am/ai_oop_neuralnet.aspx

Im Folgenden sind die Hauptgründe für die Verwendung von Schnittstellen aufgeführt

  1. Erweiterbarkeit
  2. Implementierung versteckt
  3. Zugriff auf Objekt über Schnittstellen
  4. Lose Kopplung.

Bitte besuchen Sie das Link, um über Schnittstellen zu wissen Mit dem Beispiel für herunterladbares Code

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top