मेरी एक विनिर्देश पैटर्न के माध्यम से एक व्यापार नियम लागू करने के बारे में एक प्रश्न है। निम्न उदाहरण पर विचार करें:विशिष्टता पैटर्न कार्यान्वयन
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 DateTime ValidFrom;
public DateTime ValidTo;
public Child()
{
}
}
व्यापार नियम लागू होना चाहिए कि वहाँ संग्रह जो वैधता अवधि दूसरे के साथ काटती है में एक बच्चे नहीं हो सकता।
इसके लिए मैं एक विनिर्देश लागू करना चाहता हूं जिसका उपयोग तब किया जाना चाहिए जब कोई अमान्य बच्चा जोड़ा जाता है और साथ ही यह भी जांचने के लिए इस्तेमाल किया जा सकता है कि बच्चे को जोड़ने से पहले नियम का उल्लंघन किया जाएगा या नहीं।
तरह:
public class ChildValiditySpecification
{
bool IsSatisfiedBy(Child child)
{
return child.Parent.Children.Where(<validityIntersectsCondition here>).Count > 0;
}
}
लेकिन इस उदाहरण में बच्चे माता-पिता तक पहुँचता है। और मेरे लिए यह सही नहीं लगता है। वह माता-पिता मौजूद नहीं हो सकता है जब बच्चे को अभी तक माता-पिता में जोड़ा नहीं गया है। आप इसे कैसे कार्यान्वित करेंगे?
यह एक संभावना हो सकती है। लेकिन मैं बस सोच रहा हूं कि क्या मैं इस पैटर्न का सही तरीके से उपयोग कर रहा हूं ... क्या माता-पिता होने पर वैधता अद्वितीय नहीं होगी? – Chris