हां, बिल्कुल आपके पास एक साधारण वर्ल्डबिल्डर हो सकता है, जिसका काम दरवाजे, दीवारों और कमरों सहित पूरी तरह से कॉन्फ़िगर किया गया दुनिया बनाना है। यह बहुत उपयोगी है जब आप आंशिक रूप से निर्मित नहीं करना चाहते हैं, और संभवतः अमान्य, विश्व वस्तु का खुलासा किया।
मान लें कि बिल्डर का उपयोग इस तरह है दो:
WorldBuilder builder = new WorldBuilder();
// read the definition of a room from an XML file or other source.
// this is vastily simplified, you'd probably be iteration
// something like this:
//
// for each Room in file
// for each wall in room
// for each door in wall
//
roomId = readRoomId();
wallId = readWallId();
doorId = readDoorId();
destRoomId = readDestinationRoomId();
builder.AddRoom(roomId);
builder.AddWallToRoom(roomId, wallId, SIDE.NORTH);
builder.AddDoorToWall(wallId, DOORSTYLE.WOODEN | DOORSTYLE.LOCKED, destRoomId);
// etc, etc
World world = builder.makeWorld();
एक गैर बिल्डर दृष्टिकोण दो कमरों कनेक्ट करने के लिए इस तरह कुछ करने के लिए चाहते हो सकता है वस्तुओं:
Door door = new Door(roomOne, roomTwo);
लेकिन अगर आप पहले से ही फ़ाइल से प्रत्येक कमरे को पुन: सक्रिय कर रहे थे, तो आपके पास दूसरे कमरे का संदर्भ नहीं होगा क्योंकि यह अभी तक तक नहीं पहुंच पाया है।
Door door = new Door(roomOneId, roomTwoId);
लेकिन अगर:
एक वैकल्पिक दृष्टिकोण जो आपको एक उद्देश्य यह है कि अभी तक लोड नहीं की गई का उल्लेख करने की अनुमति देता है प्रत्येक वस्तु सिर्फ अपने पड़ोसियों या माता पिता की आईडी देने के लिए, ताकि आप इस बजाय मिलता है, फ़ाइल में एक त्रुटि हुई थी और कक्ष 2 को कभी परिभाषित नहीं किया गया था, तो दुनिया अमान्य होगी।
बिल्डर विश्व निर्माण प्रक्रिया को सही ढंग से निर्माण, कनेक्ट करने और मान्य करने के सभी विवरणों का ख्याल रख सकता है, जो क्लाइंट कोड को लचीलापन प्रदान करता है जो दुनिया बनाना चाहता है, और जटिल निर्माण तर्क की विश्व वस्तु को मुक्त कर रहा है।
हाय। मैं बस निर्माता पैटर्न का उपयोग करने की अनुमति दी। – mrjasmin