2009-09-28 8 views
1

J'ai ce modèle de domaine (simplifié), qui représente un produit qui a un prix de base et attaché a de nombreux fournisseurs qui offrent un pourcentage d'actualisation spécifique par rapport au prix de base:Modélisation de domaine Aide - Produits et fournisseurs

public class CarDerivative 
{ 
    public string Name { get; set; } e.g. StackOverflow Supercar 3.0L Petrol 
    public double BasicPrice { get; set; } e.g. 10,000 
    public double Delivery { get; set; } e.g. 500 
    public IList<SupplierDiscount> { get; set; } // has 3 various suppliers 
} 

public class SupplierDiscount 
{ 
    public string SupplierName; { get; set; } 
    //public SupplierInformation SupplierDetails { get; set; } // maybe later 
    public double BasicDiscount { get; set; } 
    public double DeliveryDiscount { get; set; } // e.g. 0.10 = 10% 
} 

Maintenant, je pense à ce qui devrait être assis qui fait ce genre de choses:

Par exemple, là où BasicDiscountedPrice (formule stable) est le mieux placé, devrait-il siéger idéalement sur SupplierDiscount qui est fourni avec une référence au parent CarDerivative via l'injection du constructeur? Où devrait-on trouver une formule instable à votre avis? Comme SupplierPriceForDerivative (basic + delivery + tax +++)?

Répondre

0

Mon réflexe à ce sujet serait que les réductions devraient être des politiques. Chaque DiscountPolicy pourrait ressembler à ceci:

public interface IDiscountPolicy 
{ 
    decimal GetDiscountedPrice(CarDerivative car); 
} 

Votre SupplierDiscount pourrait être une simple mise en œuvre d'une telle politique, alors que vos formules instables pourraient être mises en œuvre dans une classe plus complexe.

Je pense qu'il serait plus sûr de séparer les entités et les politiques, de sorte que vous puissiez les faire varier indépendamment les unes des autres.

Questions connexes