Désolé pour le titre de la question erronée. Disons que j'ai une classe DateRange qui consiste simplement en une date de début et une date de fin. Ma question est: Comment puis-je représenter des plages de dates calculées telles que "Cette semaine", "Les deux dernières semaines", "Dernier mois" et "Ce trimestre", de sorte que plusieurs clients peuvent utiliser ces plages de dates calculées d'une manière cohérente? Autrement dit, je vais avoir plusieurs objets de plusieurs classes qui ont tous besoin de savoir ce que "This Week" est.OOD: plusieurs objets représentant des valeurs calculées
Je pourrais les construire dans DateRange, mais cela ne semble pas être une bonne solution, car il pourrait y en avoir plus ou certains pourraient devenir obsolètes avec le temps ... en fait, cela arrivera très certainement. Je pourrais faire un résumé de DateRange et l'étendre, mais ensuite je vais avoir un tas de classes minuscules. Je pourrais créer une sorte de classe d'aide statique qui calcule ces dates. Comment pourriez-vous aborder ce problème?
dateRange = new DateRange (RangeEnum.THISWEEK));
ou
dateRange = new ThisWeek();
ou
dateRange = DateHelper.getThisWeek();
ou
?
Pour ajouter une clé supplémentaire à cette chose, disons que je dois aussi représenter une plage comme "la semaine de travail contenant la date du 1er mai 2008". En affirmant cela, je me penche vers la classe d'aide ... c'est juste maladroit d'avoir un gros morceau de méthodes loufoques.
Cela est logique. Essentiellement, l'idée de "classe d'assistance" est simplement intégrée dans la classe DateRange. Il se sent d'une part comme cela oblige DateRange à en savoir trop sur les exigences de l'entreprise qu'il ne devrait pas avoir à ... d'autre part c'est simple et pas un gros problème. – Boden
@Boden: Je suppose que cela dépend si vous considérez la classe DateRange comme un objet métier ou un objet d'infrastructure système. Dans les systèmes financiers, ce qui constitue ThisWeek, Month ou Quarter peut varier de sorte que leur définition doit être dans un objet métier – AnthonyWJones