Als «interfaces» getaggte Fragen

Fragen zu Überlegungen zum Design der Benutzeroberfläche, z. B. zur Programmierung der Schnittstelle.

5
Wie wende ich das Prinzip der Schnittstellentrennung in C an?
Ich habe ein Modul, sagen Sie "M", das ein paar Clients hat, sagen Sie "C1", "C2", "C3". Ich möchte den Namespace des Moduls M, dh die Deklarationen der von ihm verfügbar gemachten APIs und Daten, so in Header-Dateien unterteilen, dass: Für jeden Client sind nur die erforderlichen Daten und APIs …
15 c  interfaces  solid 

2
Da nicht alle Methodendeklarationen in einer Java-Schnittstelle öffentlich abstrakt sind, sollten die Methoden mit diesen Modifikatoren deklariert werden?
Ab Java 8 wurden defaultMethoden in Interfaces eingeführt. Im Endeffekt bedeutet dies, dass nicht alle Methoden in einem interfacesind abstract. Ab Java 9 sind (möglicherweise) privateMethoden zulässig. Dies bedeutet, dass nicht alle Methoden in einem interfacesind public abstract. Die Frage "Sollen Methoden in einer Java-Schnittstelle mit oder ohne den publicZugriffsmodifikator …

1
Ist es empfehlenswert, zwei Java 8-Standardmethoden in Bezug aufeinander zu implementieren?
Ich entwerfe eine Schnittstelle mit zwei ähnlichen Methoden: public interface ThingComputer { default Thing computeFirstThing() { return computeAllThings().get(0); } default List<Thing> computeAllThings() { return ImmutableList.of(computeFirstThing()); } } Etwa die Hälfte der Implementierungen berechnet immer nur eine Sache, während die andere Hälfte möglicherweise mehr berechnet. Hat dies einen Präzedenzfall in weit …


5
Sollte ich vor einer Implementierung eine Schnittstellen-API schreiben?
Ich habe mich in letzter Zeit mit "organisierterer" Programmierung befasst und gelernt, dass ich auf eine Schnittstelle programmieren sollte, nicht auf eine Implementierung. Wäre es in diesem Sinne besser, ein Projekt in Schnittstellen zu "skizzieren", bevor Sie, wo möglich, die Implementierung dafür schreiben? Und wenn dies der Fall ist, sollte …

3
Sollte ich eine Schnittstelle direkt implementieren oder von der Superklasse ausführen lassen?
Gibt es einen Unterschied zwischen public class A extends AbstractB implements C {...} gegen... public class A extends AbstractB {...} abstract class AbstractB implements C {...} Ich verstehe, dass Klasse A in beiden Fällen der Schnittstelle entspricht. Im zweiten Fall AbstractBkann die Implementierung für Schnittstellenmethoden in bereitgestellt werden C. Ist …


1
Verwendung der Java-Standardmethode
Seit Jahrzehnten ist es der Fall gewesen , dass Schnittstellen war nur nur (nur) für die Angabe Methodensignaturen. Uns wurde gesagt, dass dies der "richtige Weg ist, Dinge zu tun ™". Dann kam Java 8 heraus und sagte: Nun können Sie Standardmethoden definieren. Ich muss rennen, tschüss. Ich bin gespannt, …


4
Zwei Schnittstellen mit identischen Signaturen
Ich versuche ein Kartenspiel zu modellieren, bei dem Karten zwei wichtige Funktionen haben: Der erste ist ein Effekt. Dies sind die Änderungen am Spielstatus, die auftreten, wenn Sie die Karte spielen. Die Schnittstelle für den Effekt ist wie folgt: boolean isPlayable(Player p, GameState gs); void play(Player p, GameState gs); Und …
13 interfaces 


4
Gibt es ein anderes Verwendungsprinzip für abstrakte Klassen / Interfaces in C ++ und Java?
Laut Herb Sutter sollte man abstrakte Interfaces (alle rein virtuellen Funktionen) abstrakten Klassen in C ++ vorziehen, um die Implementierung so weit wie möglich zu entkoppeln. Obwohl ich diese Regel persönlich sehr nützlich finde, bin ich kürzlich einem Team mit vielen Java-Programmierern beigetreten, und im Java-Code scheint diese Richtlinie nicht …

6
So implementieren Sie nur einen Teil einer Schnittstelle
Bei der Entwicklung in OOP wird manchmal eine Schnittstelle / ein Vertrag von einer Bibliothek vergeben, die Sie nicht ändern können. Nennen wir diese Schnittstelle J. Jetzt haben Sie ein Objekt der Klasse A, das Objekte verwendet, die diese Schnittstelle implementieren. Innerhalb von A wird nur ein kleiner Teil der …

3
Zusammensetzung über Vererbung aber
Ich versuche mir Software-Engineering beizubringen und stoße auf widersprüchliche Informationen, die mich verwirren. Ich habe OOP gelernt und was abstrakte Klassen / Schnittstellen sind und wie man sie verwendet, aber dann lese ich, dass man "Komposition gegenüber Vererbung bevorzugen" sollte. Ich verstehe Komposition ist, wenn eine Klasse ein Objekt einer …

5
Ist es sinnvoll, eine Schnittstelle zu definieren, wenn ich bereits eine abstrakte Klasse habe?
Ich habe eine Klasse mit einigen Standard- / gemeinsamen Funktionen. Ich benutze abstract classdafür: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new ArgumentOutOfRangeException(nameof(typeDefinition)); } protected …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.