2017-10-22 2 views
0

Nachdem ich viel gelesen habe und meinen Kopf um die Vererbung gebracht habe, bin ich auf eine Reihe von Artikeln gestoßen, die sagen, dass die Vererbung ziemlich glanzlos ist und die Schnittstellen viel besser sind und ich versuche, mit einigen Beispielen,Sollte ich in diesem Fall Vererbung oder Schnittstellen verwenden?

Hier habe ich ein Szenario in einem Testautomatisierungsrahmen, der wie folgt aufgebaut:

public abstract class BaseIntegrationTest { } 

public abstract class BaseEducationIntegrationTest extends BaseIntegrationTest { } 

public class EducationTeacherTest extends BaseEducationIntegrationTest { } 

public class EducationStudentTest extends BaseEducationIntegrationTest { } 

public class EducationTeacherSuite extends EducationTeacherTest { } 

dies akzeptabel ist? Sollte ich in diesem Szenario Schnittstellen verwenden? Ich bemühe mich zu verstehen, A) Warum (wenn ja) und B) Wenn ich das tue, denke ich, wenn ich A) denke, wird es einen langen Weg in Richtung B gehen.

Vielen Dank für Ihre Zeit.

+2

Willkommen bei Stack Overflow! Viele gute Fragen erzeugen auf der Grundlage von Expertenerfahrungen ein gewisses Maß an Meinungsbildung, aber die Antworten auf diese Frage basieren eher auf Meinungen als auf Fakten, Referenzen oder spezifischen Fachkenntnissen. Dies macht diese Frage leider zu einem Thema für diese Seite. Wenn Sie Ihre Frage so bearbeiten können, dass sie den Regeln der [Hilfe] entspricht, dann tun Sie dies bitte. –

+0

Schwer zu sagen, ohne zu sehen, was genau diese Klassen tun. In der Regel wird Interace bevorzugt, da Sie mehrere Interfaces implementieren und ihre Methode über eine Komposition an eine andere Klasse delegieren können. –

Antwort

0

Hier sind zwei Fragen, die Sie sich selbst, wenn sie in dieser Art von Situationen fragen:

  • Hat alle Tests haben einige gemeinsame Verhalten und/oder Staat? Wenn ja, machen Sie BaseIntegrationTest eine abstrakte Klasse und fügen Sie die gemeinsamen Zustände (Felder) und Verhaltensweisen (Methoden) hinzu.
  • Müssen die spezifischen Tests von etwas anderem erben? Wenn ja, machen Sie BaseIntegrationTest eine Schnittstelle, da Mehrfachvererbung nicht erlaubt ist.
Verwandte Themen