Hallo MB,
aber was ist denn wenn ich verschachtelte Objekte Habe die mehrere merkmale haben???
Nein, hast Du nicht. Dein Beispiel ist unzureichend, weil WorkerInterface eine Subklasse von PersonInterface ist, darum ist das nicht wirklich verschachtelt.
Beantworten kann man deine Frage vermutlich nicht mit einem abstrakten Fall. Da muss man immer konkret schauen. Aber ich versuch's mal.
Angenommen, du hast
interface XInterface { }
interface YInterface { }
class A implements XInterface {...}
class B implements YInterface {...}
class C implements XInterface, YInterface {...}
und willst unterschiedliches Verhalten haben, je nach dem, welche Interfaces die Klasse implementiert. Vor allem: XInterface und YInterface stehen in keiner Vererbungsbeziehung zueinander.
Dann fragt sich vor allem: Wozu? Wenn XInterface und YInterface einander fremd sind, ist die Wahrscheinlichkeit gering, dass es Logiken gibt, die ein XInterface anders behandeln müssen, wenn XInterface auch noch ein YInterface ist.
Aber wenn doch - dann sollte die Methode, die diese Logik implementiert, in den Klassen implementiert sein. Und in dem Moment hast Du es gelöst, denn du kannst die unterschiedlichen Logiken in A, B und C passend implementieren.
Wenn es einen ganzen Haufen Klassen gibt, die XInterface, YInterface oder beide implementieren, und die anzuwendende Logik bei allen Klassen jeweils davon abhängt, welche Interfaces vorliegen, nun, dann muss man sich das genau anschauen. Ist die Logik dann wirklich komplett unterschiedlich, oder kann man gruppieren - DAS beantworte ich nicht abstrakt ohne einen konkreten Usecase.
Rolf
sumpsi - posui - obstruxi