मैं कुछ महीनों के लिए डीडीडी के साथ काम कर रहा हूं और मैं कुछ ऐसी चीजों में आया हूं जिनके बारे में मुझे अनिश्चितता है।इनमें से कौन सा उदाहरण डीडीडी के सही उपयोग का प्रतिनिधित्व करता है?
Product
को Order
ऑब्जेक्ट में जोड़ने का सरल उदाहरण लें। हमारे नियंत्रक से, हमारे पास int
UI के माध्यम से पारित होगा जो डेटाबेस में Product
का प्रतिनिधित्व करता है। निम्नलिखित में से कौन सा उदाहरण सही है (मुझे बताएं कि क्या वे दोनों गलत हैं)?
उदाहरण एक:
public class OrderController
{
// Injected Repositories
private readonly IProductRepository _productRepository;
// Called by UI
public void AddProduct(int productId)
{
Order order = ...; // Persisted Order
Product product = _productRepository.GetProduct(productId);
order.AddProduct(product);
}
}
नियंत्रक उत्पाद खुद को दर्शाता है और विधि के माध्यम से उस में जोड़ता है:
void AddProduct(Product product)
{
productList.Add(product);
}
उदाहरण दो:
public class OrderController
{
// Injected Repositories
private readonly IProductRepository _productRepository;
// Called by UI
public void AddProduct(int productId)
{
Order order = ...; // Persisted Order
order.AddProduct(productId, _productRepository);
}
}
Order
डोमेन मॉडल इंजेक्शन उत्पाद भंडार इसे करने के लिए पारित कर दिया है और यह उत्पाद हो जाता है और यह कहते हैं:
Product AddProduct(int productId, IProductRepository productRepository)
{
Product product = productRepository.GetProduct(productId);
productList.Add(product);
return product;
}
मैं वर्तमान में, पहले उदाहरण के लिए चले गए हैं, क्योंकि आपके डोमेन मॉडल आंतरिक रूप से एक सेवा विधि कॉल कभी नहीं करना चाहिए, फिर भी मैंने हाल ही में कुछ उदाहरण देखे हैं जो मेरे दूसरे उदाहरण का उपयोग करते हैं और यह साफ दिखता है। मुझे लगता है कि उदाहरण एक एनीमिक पर काम कर रहा है। उदाहरण दो सभी उत्पाद जोड़ तर्क को डोमेन मॉडल में ही स्थानांतरित कर देगा।
ऐसा लगता है कि पहला उदाहरण डेटा की लालची लोडिंग की दिशा में एक डिजाइन का नेतृत्व करेगा, और दूसरा आलसी लोडिंग की ओर ले जाएगा। आप इनमें से कौन सा पसंद करते हैं? –
इन-मेमोरी सूची में जोड़े गए उत्पाद के बाद आपका ऑर्डर कैसे सहेजा गया है? क्या कोई जादू हो रहा है (क्षमा करें मुझे सी # पता नहीं है शायद ऑर्डर ऑब्जेक्ट एक ढांचा द्वारा प्रबंधित प्रॉक्सी है?) –