एक OOP पृष्ठभूमि (जावा) से आ रहा है, मैं अपने दम पर स्काला सीख रहा हूं। जबकि मैं आसानी से व्यक्तिगत रूप से अपरिवर्तनीय वस्तुओं का उपयोग करने के फायदे देख सकता हूं, मुझे यह देखने में कठिन समय हो रहा है कि कोई भी इस तरह से पूरे एप्लिकेशन को कैसे डिज़ाइन कर सकता है। मैं एक उदाहरण दूंगा:
कहें कि मेरे पास ऐसी वस्तुएँ हैं जो "सामग्री" और उनके गुणों का प्रतिनिधित्व करती हैं (मैं एक गेम डिजाइन कर रहा हूं, इसलिए मुझे वास्तव में वह समस्या है), जैसे पानी और बर्फ। मेरे पास एक "प्रबंधक" होगा जो ऐसी सभी सामग्री के उदाहरणों का मालिक है। एक संपत्ति ठंड और पिघलने बिंदु होगी, और क्या सामग्री जम जाती है या पिघल जाती है।
[संपादित करें] सभी सामग्री उदाहरण "सिंगलटन" हैं, एक जावा एनम की तरह।
मैं "पानी" कहना चाहता हूं कि यह "सी" पर "बर्फ" और "बर्फ" के लिए जमा हो जाता है यह कहने के लिए कि यह 1 सी पर "पानी" के लिए पिघला देता है। लेकिन अगर पानी और बर्फ अपरिवर्तनीय हैं, तो वे एक दूसरे को निर्माता मापदंडों के रूप में संदर्भ नहीं दे सकते हैं, क्योंकि उनमें से एक को पहले बनाना होगा, और उस एक को निर्माता पैरामीटर के रूप में नहीं-अभी तक मौजूदा अन्य का संदर्भ नहीं मिल सकता है। मैं उन दोनों को प्रबंधक को एक संदर्भ देकर इसे हल कर सकता था ताकि वे इसे अन्य सामग्री उदाहरण को खोजने के लिए क्वेरी कर सकें जो उन्हें हर बार उनकी ठंड / पिघलने वाली संपत्तियों के लिए कहा जा रहा है, लेकिन फिर मुझे प्रबंधक के बीच वही समस्या आती है और सामग्री, कि उन्हें एक दूसरे के लिए एक संदर्भ की आवश्यकता है, लेकिन यह केवल उनमें से एक के लिए कंस्ट्रक्टर में प्रदान किया जा सकता है, इसलिए या तो प्रबंधक या सामग्री अपरिवर्तनीय नहीं हो सकती है।
क्या इस समस्या के आसपास उनका कोई रास्ता नहीं है, या क्या मुझे "कार्यात्मक" प्रोग्रामिंग तकनीकों, या इसे हल करने के लिए कुछ अन्य पैटर्न का उपयोग करने की आवश्यकता है?
h2o
सामग्री है