Angenommen, ich habe die Schnittstelle ISomeInterface mit den Methoden foo und bar definiert.
Zum BeispielWie gehen Sie vor, wenn die Implementierung für eine Interface-Methode für einige Klassen gleich ist?
Nehmen wir an, ich habe die Klassen A und B, die für beide sinnvoll sind, die Schnittstelle zu implementieren. Es macht aber auch keinen Sinn, eine andere Implementierung für foo()
zu haben.
Berücksichtigt man, dass das Ableiten von A von B oder B von A falsch/seltsam ist, gibt es eine Standardcodierungspraxis für dieses Design?
Ich nehme an, ich könnte einige Dienstprogramme Klasse erstellen foo()
zu implementieren und es als Delegierter nennen, aber ich frage mich, ob diese ganze Struktur unterschiedlich behandelt werden können
Update:
Um ein volles Verständnis für meine Frage zu geben ich stolperte über diese: http://perlbuzz.com/2010/07/why-roles-in-perl-are-awesome.html und ich habe versucht zu verstehen, wenn diese Funktion von den traditionellen OO-Konzepten fehlt, wie wir sie in Java verwenden oder nicht
Warum machen Sie nicht Ihre Schnittstelle zu einer abstrakten Klasse und bieten eine Implementation für foo()? – Seb
Wenn Sie in Java8 sind, könnten Sie eine [Standardimplementierung in der Schnittstelle] (http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html) bereitstellen oder Sie könnten immer dem agilen Manifest folgen und entscheiden Sie sich für eine Has-A-Beziehung, indem Sie einen Mitarbeiter erstellen, der die Funktionalität ausführen kann. Das A und B würden eine Is-A-Beziehung mit der Schnittstelle und eine Has-A-Beziehung mit dem Kollaborateur haben. –
@Dan Temple: Siehe Update – Jim