मान लें कि मैं स्क्रैबल के अपने संस्करण को कार्यान्वित कर रहा हूं। वर्तमान में मेरे पास Board
कक्षा है जिसमें Squares
बहुत सारे हैं। Square
बदले में IBonus
और Piece
से बना है। बोनस कार्यान्वयन वास्तव में स्क्रैबल के लिए सामान्य बोनस है, लेकिन यह संभव है कि मैं खेल को मसाला देने के लिए कुछ नया और मुड़ बोनस जोड़ने का प्रयास कर सकता हूं - यहां लचीलापन सर्वोपरि है!स्क्रैबल के खेल कार्यान्वयन के लिए एक लचीला और एक्स्टेंसिबल बोनस सिस्टम डिज़ाइन करना
थोड़ी देर के लिए सोच के बाद मैंने निष्कर्ष पर पहुंचे कि IBonus
कार्यान्वयन काम करने के लिए, वे पूरे Board
और भी इसकी वर्तमान स्थिति (Board
पर पता करने के लिए की आवश्यकता होगी, तो यह यह जहां जानता है है और यह उस टुकड़े की जांच कर सकता है जो बोनस के समान वर्ग में है)। यह मुझे मूल रूप से खराब करता है क्योंकि इसे पूरी तरह से जानकारी की आवश्यकता होती है।
तो, मेरा निष्पक्ष कार्यान्वयन Board
को IBonus.calculate()
विधि, IBonus.calculate(Board board, Point position)
पर तर्क के रूप में पास करना होगा।
इसके अलावा, ऐसा लगता है कि यह एक परिपत्र संदर्भ बनाता है। या मैं गलत हूँ?
मैं इस दृष्टिकोण की तरह कण नहीं करता, इसलिए मैं अन्य संभावित दृष्टिकोण ढूंढ रहा हूं। मुझे पता है कि मैं calculate
को कंक्रीट क्लास के बजाय इंटरफ़ेस स्वीकार कर सकता हूं, यानी calculate(IBoard board)
लेकिन मैं आईएमओ जो पहले मामले की तुलना में बेहतर नहीं है।
मुझे डर है कि मेरे वर्तमान कार्यान्वयन पर बहुत ध्यान केंद्रित किया जा रहा है ताकि कम से कम इस समस्या के समाधान के साथ-साथ पूरे अलग-अलग डिज़ाइनों के बारे में सोच सकें। शायद मैं पूरे गेम को फिर से आर्किटेक्ट कर सकता हूं और अन्य जगहों पर बोनस कर सकता हूं, इसलिए यह इस गणना को सुविधाजनक बनाएगा? शायद मैं उन्हें Board
पर रखने पर बहुत ध्यान केंद्रित कर रहा हूं? मुझे उम्मीद है कि इस समस्या के लिए अन्य दृष्टिकोण हैं!
धन्यवाद
अच्छा चित्र –
क्या उपकरण आपको आरेख बनाने के लिए उपयोग किया था के लिए +1? –
yUML, यह आपको उन्हें बनाने और उन्हें ऑनलाइन होस्ट करने की अनुमति देता है। –