Ich suche ein Muster, das eine bestimmte Situation beschreibt. Vielleicht weiß jemand etwas und kann mir einen Tipp gebenAuf der Suche nach einem bestimmten Designmuster
Situation Objekt vom Typ A, 1: n Zuordnung zu Objekten des Typs B. Beispiel: Eine Person und alle seine Haustiere. Die Haustierobjekte haben ein Altersdatenelement. Jetzt sollte jede Person ein Datenmitglied für das Durchschnittsalter seiner Haustiere haben. Ich möchte nicht, dass diese Informationen gespeichert und geladen werden, sondern während des Ladevorgangs berechnet werden (alle notwendigen Informationen sind bereits vorhanden, also ist es irgendwie redundant, aber ich möchte die Informationen in dem Personenobjekt).
Frage Also wie kann ich das in einer objektorientierten Weise tun? Gibt es ein Muster, das diese Situation beschreibt? Meine erste Idee war, eine Klasse ComputeredFieldsUpdater zu haben, die ein Haustierobjekt annimmt und dann das ganze Feld berechnet, das nicht geladen worden ist. Aber ich frage mich, ob dies der richtige Weg ist oder ob es eine elegantere Lösung geben könnte?
Danke für Ihre Gedanken.
noch besser die durchschnittliche kann dann statt jedes Mal – MahdeTo
„Von einer objektorientierten Sicht neu berechnet zwischengespeichert wird, die Informationen über den Durchschnitt nicht direkt in der Person sein sollten -Objekt sowieso. " - Ich bin mir da nicht so sicher. Im Allgemeinen möchte ein Code in OOP eine Klasse bitten, die Berechnung dafür durchzuführen - und sich keine Gedanken über interne oder intermediäre Darstellungen der Daten machen. Ich denke, etwas wie person.getPetsAverageAge() wäre eine geeignete Methode dafür. – harto
Dies würde jedoch das Prinzip der einheitlichen Verantwortung verletzen. Eine Personenklasse, wie ich sie verstehe, ist verantwortlich für die Darstellung des abstrakten Konzepts einer Person. Wenn Sie es auch dafür machen, Berechnungen für assoziierte Klassen durchzuführen, haben Sie eine zweite Verantwortung übernommen. Es sei denn, der einzige Zweck der Person besteht darin, diese Berechnungen durchzuführen und nicht eine Person darzustellen. Aber die Benennung ist sehr irreführend. –