Ich bin das jetzt ein paar Mal begegnet, und ich habe mich gefragt, was der OO-Weg ist, um Zirkelverweise zu lösen. Damit meine ich, Klasse A hat Klasse B als Mitglied, und B wiederum hat Klasse A als Mitglied.Wie löst man Querverweise in OOP?
Ein Beispiel hierfür wäre die Klasse Person, die den Ehepartner der Person als Mitglied hat.
Ein anderes Beispiel wäre Produktklassen, die eine Sammlung anderer Produkte als Mitglied haben. Diese Sammlung könnte zum Beispiel Produkte sein, an denen auch Personen interessiert sein könnten, die an diesem Produkt interessiert sind, und wir möchten diese Liste auf einer Pro-Produkt-Basis aufrechterhalten, nicht auf denselben geteilten Attributen (zB wollen wir nicht nur anzeigen alle anderen Produkte derselben Kategorie).
Product pc = new Product("pc");
Product monitor = new Product("monitor");
Product tv = new Product("tv");
pc.setSeeAlso({monitor, tv});
monitor.setSeeAlso({pc});
tv.setSeeAlso(null);
(diese Produkte sind nur noch einen Punkt für die Herstellung, das Problem nicht etwa, ob oder nicht bestimmte Produkte miteinander in Beziehung stehen würden)
Wäre dies schlechtes Design in OOP im Allgemeinen? Sollten/sollten alle OOP-Sprachen dies zulassen, oder ist es nur eine schlechte Übung? Wenn es eine schlechte Übung ist, was wäre der beste Weg, dies zu lösen?
@Jon Limjap: Danke für die Korrektur des Tippfehlers. – tehvan