Logiquement, un modèle de réduction peut être n'importe quoi , vous ne pouvez donc pas supposer que vous pouvez programmer tous les cas à l'avance. Quiconque répond à votre question ne peut pas non plus être complètement sûr de ce dont vous avez réellement besoin. Cependant, en supposant que vous obteniez les types de rabais habituels trouvés dans le monde réel ...
Une grande question est de savoir si les réductions seront programmées ou si vous voulez que les utilisateurs les saisissent. Comme mentionné ci-dessus, vous ne pouvez jamais les programmer, mais l'objectif consiste généralement à essayer de créer davantage de données, comme dans les cas courants, plutôt que de les programmer toutes. Ceci s’applique dans une certaine mesure même si les programmeurs sont utilisés pour créer toutes les remises.
Martin Fowler mentionne "Méthode d'instance individuelle" dans "Modèles d'analyse: modèles d'objet réutilisables" dans le cadre de la mise en œuvre de "Règles de comptabilisation" pour les systèmes de comptabilité, mais les règles semblent assez similaires aux vôtres. Je donnerais plus de détails, mais c'est une œuvre protégée par le droit d'auteur et
Pour une interface utilisateur, vous devez soit proposer des cas d’utilisation assez simples, soit créer un interpréteur et un générateur de requêtes. Peut-être les deux, un pour les cas simples et un plus avancé. Si vous écrivez un interprète, c'est probablement un assez bon cas pour utiliser le motif Interpreter, puisqu'il est relativement simple à coder par rapport à un générateur d'analyseur, et que le temps d'analyse plus lent n'aura probablement pas d'importance. (Si vous aimez utiliser des générateurs d'analyseur, ne me laissez pas vous arrêter).
Cependant, n'essayez pas de tout faire avec un interprète - à un moment donné, vous programmez simplement dans votre propre langage minable, vous pouvez donc aussi bien utiliser un vrai langage. Si votre langage interprété prend en charge des fonctions (il devrait probablement prendre en charge leur appel - leur définition est douteuse), celles-ci peuvent être codées dans un langage réel. N'allez pas plus loin dans cette voie que nécessaire.
Peu importe ce que vous faites, quelqu'un voudra éventuellement que le rabais soit calculé en fonction de son achat dans les 30 jours ouvrables suivant une promotion - les jours ouvrables étant pris en compte uniquement s'il n'y a pas eu de jour férié dans la région définie par le code postal du magasin ou par le client. code postal. N'essayez donc pas de concevoir le système parfait à l'avance. Supposons que vous deviez parfois écrire du code pour de nouveaux types de remises et concevoir en conséquence.