Je cherche un motif décrivant une situation particulière. Peut-être que quelqu'un sait quelque chose et peut me donner un indiceRecherche d'un motif de dessin spécifique
Situation Objet de type A, 1: n association avec des objets de type B. Exemple: Une personne et tous ses animaux de compagnie. Les objets familiers ont un membre de données d'âge. Maintenant, chaque personne devrait avoir un membre de données pour l'âge moyen de ses animaux de compagnie. Je ne veux pas que cette information soit sauvegardée et chargée, mais qu'elle soit calculée pendant le processus de chargement (toutes les informations nécessaires sont déjà là, donc c'est un peu redondant, mais je veux les informations dans l'objet personnel).
Question Alors, comment puis-je faire cela de manière orientée objet? Y a-t-il un modèle qui décrit cette situation? Ma première idée était d'avoir une classe ComputedFieldsUpdater qui prend un objet animal de compagnie et ensuite calcule tout le champ qui n'a pas été chargé. Mais je me demande si c'est la bonne façon ou s'il pourrait y avoir une solution plus élégante?
Merci pour votre avis.
encore mieux la moyenne peut alors être mis en cache au lieu de recalculée chaque fois – MahdeTo
« D'un point de vue orienté objet les informations sur la moyenne ne devrait pas être directement dans la personne -objet de toute façon. " - Je ne suis pas si sûr de ça. Généralement dans la POO, du code veut demander à une classe d'effectuer le calcul pour elle - et ne pas s'inquiéter des représentations internes ou intermédiaires des données. Je pense que quelque chose comme person.getPetsAverageAge() serait une méthode appropriée pour cela. – harto
Mais cela violerait le principe de la responsabilité unique. Une classe Person telle que je la comprends est responsable de la représentation du concept abstrait d'une personne. Si vous lui confiez également la responsabilité de faire des calculs sur des classes associées, vous lui avez confié une seconde responsabilité. À moins bien sûr que le seul but de la personne est de faire ces calculs et de ne pas représenter une personne. Mais le nom est très trompeur. –