Ich wünsche mir, eine Schnittstelle könnte aus Methoden bestehen, die in mehreren Klassen erfüllt sind. Wenn ich das könnte, könnte ich eine Schnittstelle für eine Rolle erstellen, die eine Funktion von dieser Klasse und eine Funktion von dieser Klasse hat.Interface Split zwischen zwei Klassen
Unterstützt eine beliebige Sprache dies? Ist es möglich in der typischen Java/C#/VB.NET-Stil OO?
Zum Beispiel: Ich habe eine Funktion, die ein Wertobjekt übernimmt und alle Teile in den richtigen Tabellen speichert. Ich habe gerade eine Schnittstelle namens StatsPersistence
erstellt, die ich in eine Funktion injiziere, damit ich ihr Verhalten testen kann, aber es fehlt eine Methode. Ich möchte in der Lage sein, eine Methode hinzuzufügen, aber diese Methode ist in einer anderen Klasse als die ersten beiden, also ist das natürlich nicht möglich. Also, ich habe 2 Methoden in einer Klasse und 1 sind in der anderen, aber sie beide sind für die "Rolle" von "StatsPersistence" benötigt. Auch diese Methoden werden alle drei für andere Rollen benötigt, nicht nur diese.
Was ich habe:
interface StatsPersistence
public saveSession(session) // fulfilled in much larger StatsActiveRecord
public saveAppUse(appUse) // fulfilled in much larger StatsActiveRecord
Was ich will:
interface StatsPersistence
public saveSession(session) // fulfilled in much larger StatsActiveRecord
public saveAppUse(appUse) // fulfilled in much larger StatsActiveRecord
public updateUnit(name) // fulfilled in much larger UnitActiveRecord
ich konnte nur eine neue Klasse machen, die alle drei Methoden Wraps, und haben diese Klasse nur Anrufe an die machen zwei Implementierer, aber das scheint eine Menge von OOverkill zu sein.
Meine Gedanken Neigung zu: zu breit
- Meine Schnittstelle Rolle ist
- eine Klasse machen, dass diese drei Packungen, und haben es meine gewünschte Schnittstelle implementieren
Fassadenmuster vielleicht? –
"Schnittstelle ist Vertrag, den die Klasse erfüllen muss" UND NICHT "Klassen sind Verträge, auf die die Schnittstelle angewendet werden muss". – Dhananjay
@Dhananjay Ich wusste das, ich hoffte nur, dass es vielleicht ein "unbekanntes Unbekanntes" gab, das außerhalb meines Verständnisses von Schnittstellen und Klassen lauerte und wie sie zusammengesetzt werden konnten. Vielleicht eine neue Verwendung von Merkmalen oder eine funktionale Programmiertechnik, die mir nicht bekannt ist. – Steve