Interface Methode im Interface mit mehreren Parametern

tobi_doc

Mitglied
Hallo zusammen,

ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen - ich bin noch Java Anfänger - also seid bitte lieb 😀 ...

Ich habe ein Interface ITerminationCondition mit einer Methodendeklaration für die Klassen TerminationAfterSteps (prüft Abbruch nach bestimmter Schrittanzahl) und TerminationWithoutStateChange (prüft ob sich ein Objekt verändert hat). Meine Idee war, dass ich im Interface in der Methodendeklaration einfach alle Übergabeparameter ("aktuelle Schrittnr.", "altes Objekt", "neues Objekt") einbaue.

Nun ist es aber so, dass TerminationAfterSteps nur die "aktuelle Schrittnr." und die Klasse TerminationWithoutStateChange nur die "altes Objekt" & "neues Objekt" benutzen würde.
Ich habe die Vermutung, dass das kein guter Programmierstil ist und hoffe nun auf eure Tipps!

Vielen Dank im Voraus!

Beste Grüße
Tobi
 
Wozu?


Schlechte Idee.


Vielen Dank für Deine Antwort. ... das Interface dient als Schnittstelle für eine Berechnung. Die Berechnung fragt einfach nur darf ich weiter machen oder halt nicht ... was hinter dem Interface passiert soll der Berechnung egal sein.

... ja das habe ich mir auch schon gedacht aber es wäre nett wenn Du formulieren könntest warum - bzw. noch besser - was ich verändern könnte.
 
Sorry, hatte Deinen Text falsch gelesen und war der Meinung, Du hast im Interface zwei Methoden und willst jetzt eine dritte einbauen, die diese zusammenfasst.

Du hast aber etwas in der Art
Java:
interface ITerminationCondition<T> {
    boolean shouldTerminate(int step, T oldValue, T newValue);
}
Das wäre grds. in Ordnung.
 
Sorry, hatte Deinen Text falsch gelesen und war der Meinung, Du hast im Interface zwei Methoden und willst jetzt eine dritte einbauen, die diese zusammenfasst.

Du hast aber etwas in der Art
Java:
interface ITerminationCondition<T> {
    boolean shouldTerminate(int step, T oldValue, T newValue);
}
Das wäre grds. in Ordnung.


Ja genauso hatte ich mir das gedacht. Bedeutet, es ist kein Problem, dass die einzelnen Klassen nicht alle Parameter benutzen. Oder könnte ich nicht theoretisch auch zwei Methoden mit dem gleichen Namen im Interface deklarieren und bei der einen die Parameter für die eine Klasse und bei der anderen Methode die Parameter der anderen Klasse festlegen?
 
Ja genauso hatte ich mir das gedacht. Bedeutet, es ist kein Problem, dass die einzelnen Klassen nicht alle Parameter benutzen. Oder könnte ich nicht theoretisch auch zwei Methoden mit dem gleichen Namen im Interface deklarieren und bei der einen die Parameter für die eine Klasse und bei der anderen Methode die Parameter der anderen Klasse festlegen?
Könntest du, dann müssten die Clienten des Interfaces aber wissen, welche Methode sie aufrufen müssen (und damit Implementierungsdetails der TerminationConditions kennen müssten).

Außerdem hast du dann irgendwann den Fall, dass du 7 Methoden hast, weil du alle möglichen Kombinationen der drei brauchst.


(
ITerminationCondition
:
Was an dem Interface eher überflüssig ist: das 'I' 😛 )
 
Könntest du, dann müssten die Clienten des Interfaces aber wissen, welche Methode sie aufrufen müssen (und damit Implementierungsdetails der TerminationConditions kennen müssten).

Außerdem hast du dann irgendwann den Fall, dass du 7 Methoden hast, weil du alle möglichen Kombinationen der drei brauchst.


🙂
Was an dem Interface eher überflüssig ist: das 'I' 😛 )

Super vielen Dank auch für Deine Antwort! Hast Du vielleicht einen besseren Lösungsvorschlag? oder wäre - Parameter mitgeben, die letztendlich vllt, vllt aber auch nicht benutzt werden - der beste Weg?

Das I muss laut Prof da hin also mach ich es mal lieber da hin 😀
 
Super vielen Dank auch für Deine Antwort! Hast Du vielleicht einen besseren Lösungsvorschlag? oder wäre - Parameter mitgeben, die letztendlich vllt, vllt aber auch nicht benutzt werden - der beste Weg?
Das Interface dürfte so wie es jetzt ist, am sinnvollsten sein.
Die Clients können nicht wissen, welche Parameter benutzt werden, sie können also sowieso nicht nur die passenden mitgeben.

Das I muss laut Prof da hin also mach ich es mal lieber da hin 😀
Ein Prof der sagt, das muss da hin? 😵
 
Ich glaube der I-Interface Stil kommt aus der C#-Ecke. Genauso wie E-Enums 🙄 Ist bei Java aber nicht unbedingt so üblich.
MÜSSEN tut es auf keinen Fall dahin.
 

Zurück
Oben