कई बार मेरी व्यावसायिक वस्तुओं में ऐसी परिस्थितियाँ होती हैं, जहाँ जानकारी के लिए वस्तुगत सीमाओं को भी पार करना पड़ता है। OO करते समय, हम चाहते हैं कि जानकारी एक वस्तु में हो और जितना संभव हो उस जानकारी से निपटने वाले सभी कोड उस वस्तु में होने चाहिए। हालांकि, व्यावसायिक नियम मुझे परेशान करने वाले इस सिद्धांत का पालन नहीं करते हैं।
एक उदाहरण के रूप में मान लें कि हमारे पास एक ऑर्डर है जिसमें कई ऑर्डरइमेट्स हैं जो एक इन्वेंट्री इटेम को संदर्भित करता है जिसकी कीमत है। मैं Order.GetTotal () का आदेश देता हूं, जो OrderItem.GetPrice () का परिणाम बताता है, जो InventoryItem.GetPrice () द्वारा एक मात्रा को गुणा करता है। अब तक सब ठीक है।
लेकिन फिर हमें पता चलता है कि कुछ वस्तुओं को एक सौदे के लिए दो के साथ बेचा जाता है। हम इसे OrderItem.GetPrice () InventoryItem.GetPrice (मात्रा) की तरह कुछ कर सकते हैं और InventoryItem को इससे निपटने दे सकते हैं।
हालांकि, तब हमें पता चलता है कि दो-के लिए एक सौदा केवल एक विशेष समय अवधि के लिए रहता है। इस समय अवधि को आदेश की तारीख पर आधारित होना चाहिए। अब हम OrderItem.GetPrice () को InventoryItem.GetPrice (quatity, order.GetDate ()) में बदलते हैं।
लेकिन तब हमें अलग-अलग कीमतों का समर्थन करने की आवश्यकता होती है, जो इस बात पर निर्भर करता है कि ग्राहक कितने समय से सिस्टम में है: InventoryItem.GetPrice (मात्रा, order.GetDate (), order.GetCustomer ())
लेकिन फिर यह पता चला है कि दो-के-लिए एक सौदे में न केवल एक ही इन्वेंट्री आइटम के कई खरीदने के लिए लागू होता है, बल्कि एक इन्वेंटरीचोरीरी में किसी भी आइटम के लिए कई। इस बिंदु पर हम अपने हाथों को फेंक देते हैं और बस इन्वेंटरी इटेम को ऑर्डर आइटम देते हैं और इसे एक्सेसर्स के माध्यम से ऑब्जेक्ट रेफरेंस ग्राफ पर यात्रा करने की अनुमति देते हैं ताकि इसकी जरूरत की जानकारी मिल सके: InventoryItem.GetPrice (यह)
टीएल; डीआर मैं वस्तुओं में कम युग्मन रखना चाहता हूं, लेकिन व्यावसायिक नियम मुझे विशेष रूप से निर्णय लेने के लिए जगह-जगह से जानकारी प्राप्त करने के लिए मजबूर करते हैं।
क्या इससे निपटने की अच्छी तकनीकें हैं? क्या दूसरों को भी यही समस्या है?