मुझे यह बहुत कुछ दिखाई देता है और मैं सोच रहा था कि भारी स्विच से बचने के लिए इस अच्छी तरह से प्रतिक्रिया करने का कोई तरीका था या नहीं? यह कारखाने में एक विधि है: RoomControllerFactory, इसके प्रकार के आधार पर एक गेम स्थान को तुरंत चालू करना।क्या फ़ैक्टरी विधि में स्विच करने का कोई विकल्प है?
public static const ROOMONE : LocationType = new LocationType("locationone",
function(...) : RoomController {
return new RoomOneController
}
);
: - क्यों आप अपने enum के लिए एक विधि नहीं जोड़ते हैं के रूप में आप एक हैक का उपयोग कर रहे enum सुविधा प्रदान करने के
switch (location.getType())
{
case Location.ROOMONE:
return new RoomOneController(location, data, view);
case Location.ROOMTWO:
return new RoomTwoController(location, data, view);
case Location.ROOMTHREE:
return new RoomThreeController(location, data, view);
मुझे एक्शनस्क्रिप्ट नहीं पता है, लेकिन मैं RoomControllerFactory के साथ विभिन्न स्थानों के प्रकारों को पंजीकृत करने के लिए हैशटेबल का उपयोग करूंगा जो कि सही कक्ष नियंत्रक को तुरंत चालू कर सकता है। सी # में शुरुआती कमरा नियंत्रक कारखानों [location.getType()] = नया कमराऑनकंट्रोलर फैक्टरी(); बाद में बाद में: रूम नियंत्रक कारखानों [location.getType()]। बनाएँ (स्थान, डेटा, देखें); – Polity
क्या इन कक्ष नियंत्रक उदाहरण प्रोग्राम में एक से अधिक बार तत्काल हैं? उदाहरण के लिए, यदि यह एक भूलभुलैया था, तो क्या आपके पास TeeIntersectionRoomController के कई उदाहरण होंगे? या क्या ये उदाहरण गेम में बिल्कुल अनोखे हैं, उदाहरण के लिए बकिंघमपेलसट्रोनरूम नियंत्रक? यह * सबसे अच्छा समाधान प्रभावित कर सकता है ... – jpwrunyan
वे एक समय में मौजूद हैं यानी जब आप स्थान पर जाते हैं, लेकिन वर्तमान में एक से अधिक बार तत्काल हो जाते हैं, यानी यदि आप रूमोन में वापस जाते हैं तो हम कमरे को फिर से बना देंगे। लेकिन कुछ भी कमरे कुछ अनूठे हैं, कुछ कमरे पर्याप्त हैं, इन्हें एक से अधिक का प्रतिनिधित्व करने के लिए उपयोग किया जा सकता है, उदाहरण के लिए एक कमरे के प्रकार की दुकान का इस्तेमाल कई स्थानों के लिए किया जा सकता है, केवल बिक्री के लिए डेटा-सामान द्वारा, लेकिन कमरे के प्रकार का कमरा केवल एक बार इस्तेमाल किया जाएगा। मुझे उम्मीद है कि यह स्पष्ट है। :) – serenskye