eneR: Bidirektionales verlinken

Hallo,
ich habe heute wieder an einem Beispiel gesehen, dass Bidirektional verlinkt wurde (es ging um eine Famillie mit Personen als Familienmitglieder, wo die Personen ein Feld hatten "familiy" und die Familie eine list mit "person"s drin). Jetzt kam mir wieder die Frage auf, wann ist es wirklich sinnvoll bidirektional zu verlinken und wann schreibt man lieber ein Service, der einen eine Methode à la "getFamilie(Person p)" gibt (und dann bei allen Familien "contains(Person p)" aufruft, bis true geliefert wird)?

Grüße,
eneR

P.S.: Falls das von Belang sein sollte, ich beziehe mich jetzt insbes. auf Java.

  1. Hi!

    Jetzt kam mir wieder die Frage auf, wann ist es wirklich sinnvoll bidirektional zu verlinken und wann schreibt man lieber ein Service, der einen eine Methode à la "getFamilie(Person p)" gibt (und dann bei allen Familien "contains(Person p)" aufruft, bis true geliefert wird)?

    Bei Java schreibt man sich doch sowieso Zugriffsmethoden. getFamily() ist dann eine Methode von Person. Was die dann anstellt, um an die Information zu kommen ist nach außen hin ja egal. Intern kommt es nun sehr drauf an, wie die Daten gehalten werden. Ist die Liste der Familien a) vollständig im Speicher oder b) müssen diese aus einer Datenhaltung abgefragt werden? Bei a) lohnt sich eine Rückverlinkung, wenn du dir das ständige Abklappern sparen willst. Bei b) muss sowieso die Datenhaltung befragt werden, die üblicherweise recht effizient die eine Information findet (abgesehen vom Overhead der Kommunikation zur Datenhaltung).

    Lo!