मैं सोच रहा था कि निम्नलिखित में से कौन सा मूल बाल संबंधों से निपटने के दौरान सबसे अच्छा अभ्यास माना जाता है।डोमेन संचालित डिजाइन - अभिभावक बाल संबंध पैटर्न - विशिष्टता पैटर्न
1) निम्नलिखित उदाहरण एक आम प्रथा प्रतीत होता है, लेकिन जब बच्चे का उदाहरण बनाते हैं, तब तक यह अमान्य स्थिति में होगा जब तक कि यह अभिभावक में नहीं जोड़ा जाता है। सत्यापन आदि
public class Parent
{
private ICollection<Child> children;
public ReadOnlyCollection Children { get; }
public void AddChild(Child child)
{
child.Parent = this;
children.Add(child);
}
}
public class Child
{
internal Parent Parent
{
get;
set;
}
public Child()
{
}
}
2) अगले नमूना देखभाल कि एक बच्चे हमेशा अपने माता-पिता से संबंधित होना चाहिए ले जाएगा के बारे में समस्याओं को यह नेतृत्व नहीं जा सका।
public class Parent
{
private ICollection<Child> children;
public ReadOnlyCollection Children { get; }
public Child CreateChild()
{
var child = new Child();
child.Parent = this;
children.Add(child);
return child;
}
}
public class Child
{
internal Parent Parent
{
get;
set;
}
internal Child()
{
}
}
3) आखिरी उदाहरण में कि बच्चा अपने माता-पिता के संबंधों का ख्याल रखता है।
public class Parent
{
private ICollection<Child> children;
public ReadOnlyCollection Children { get; }
public void AddChild(Child child)
{
child.Parent = this;
children.Add(child);
}
}
public class Child
{
public Parent Parent
{
get;
set;
}
public Child(Parent parent)
{
this.Parent = parent;
}
}
कौन सा पैटर्न सबसे अच्छा माना जाता है? मेरा मानना है कि पैटर्न 2 सबसे अच्छा हो सकता है तब से कोई बच्चा अपने माता-पिता के संबंध में कभी अस्तित्व में नहीं हो सकता है। इससे यह आसान हो जाएगा उदा। एक विनिर्देश पैटर्न को कार्यान्वित करते समय:
public class ChildSpecification
{
bool IsSatisfiedBy(Child child)
{
return child.Parent.Children.Where(someCondition).Count > 0;
}
}
उपर्युक्त विनिर्देश केवल तभी काम कर सकता है जब किसी बच्चे के माता-पिता हों।
आपको क्या लगता है? क्या आप बेहतर तरीके जानते हैं? अग्रिम धन्यवाद
विनिर्देश पैटर्न एक विशेष मामले के बारे में है जो वर्तमान में मेरी परियोजनाओं में से एक में है। एक बच्चे की वैधता तिथि सीमा होती है, जिसे बाल संग्रह में किसी भी अन्य बच्चे की किसी अन्य वैधता दिनांक सीमा से अलग नहीं होना चाहिए। क्या आप इसे माता-पिता के लिए एक विनिर्देश मानेंगे? – Chris
मैं इसे माता-पिता की addChild() विधि में एक गार्ड स्थिति के रूप में लागू कर दूंगा। तब माता-पिता जोड़ों को अस्वीकार कर देंगे। अपवाद फेंक कर। मैं शायद इस मामले में एक विनिर्देश का उपयोग नहीं करेंगे। – alasdairg
लेकिन मुझे इसे UI पर भी जांचना होगा। तो जब अपवाद में फेंक दिया जाता है, तो मुझे इसे पकड़ना होगा। यह या तो बहुत सुरुचिपूर्ण नहीं है। और विनिर्देशों के बारे में अच्छी बात यह है कि मैं इसे विभिन्न परिदृश्यों में उपयोग कर सकता हूं जैसे कि 1.) मेरे डोमेन के भीतर 2.) क्लाइंट एप्लिकेशन के भीतर व्यावसायिक तर्क को पूर्व-सत्यापित करने के लिए। या मैं गलत हूँ? – Chris