Question

Pour chaque produit sont associés des calculateurs de coûts comme:. Escompte, discount par le marchand, la prime par le marchand, etc. rabais mensuel À l'avenir, serait ajouté plus des calculateurs de coûts

Nous avons une classe de produits en béton et de nombreux décorateurs pour chaque calcul des coûts. Tous les produits doivent utiliser toutes les calculatrices, parce que les calculateurs décident d'appliquer leurs calculs par les propriétés du produit comme id marchand de produit, catégorie id, couleur etc.

Et, il y a des millions de produits dans notre système qui doit être calculé. Ainsi, nous mettons en cache mieux les calculatrices décorées. Parce que, la décoration de chaque entité de produit dans l'exécution serait coûteux. Mais cela est difficile avec motif décorateur. Il semble comme une odeur d'utiliser ce modèle dans notre situation.

Que proposez-vous? Faut-il utiliser les décorateurs, la stratégie ou le modèle de la chaîne de responsabilité? Ou sans motif.

Était-ce utile?

La solution

  

Tous les produits doivent utiliser tous les   calculatrices, parce que les calculatrices   décider d'appliquer leurs calculs par   Les propriétés du produit comme produit   id marchand, catégorie id, couleur etc.

Si vous avez besoin d'avoir tous les produits utilisent tous les décorateurs, alors vous n'êtes pas vraiment obtenir un avantage du modèle. Est-ce que cela signifie que si vous implémentez un nouveau décorateur, toutes les entités existantes doivent être mises à jour pour utiliser ce nouveau décorateur?

Décorateurs devraient être appliqués aux produits uniquement lorsque cela est nécessaire, et que les décorateurs qui sont nécessaires devraient être appliquées.

Je pense que vous devez supprimer la décision de l'intérieur des décorateurs; quelque chose d'autre devrait décider d'appliquer ou non un décorateur, auquel cas il enveloppe le produit dans les décorateurs appropriés. De cette façon, vous savez que si un produit est enveloppé dans un décorateur, décorateur qui affecte (effectuer?) Le produit.

Autres conseils

Dans un modèle de stratégie, l'intention de l'objet change.

Par conséquent, je pense que la stratégie serait un bon choix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top