बिल्डर्स सबसे उपयोगी होते हैं जब आपकी वस्तु को उपयोगी होने के लिए बहुत सारे तर्क / निर्भरता की आवश्यकता होती है, या आप ऑब्जेक्ट के निर्माण के कई अलग-अलग तरीकों की अनुमति देना चाहते हैं।
मेरे सिर के ऊपर से, मैं सोच सकता हूं कि कोई व्यक्ति इस तरह से एक 3 डी गेम में वस्तुओं का "निर्माण" करना चाहता है:
// Just ignore the fact that this hypothetical god class is coupled to everything ever
new ObjectBuilder(x, y, z).importBlenderMesh("./meshes/foo")
.syncWithOtherPlayers(serverIP)
.compileShaders("./shaders/foo.vert", "./shaders/foo.frag")
.makeDestructibleRigidBody(health, weight)
...
मैं यह तर्क दूंगा कि यह बिल्डर तरीकों के साथ अधिक पठनीय है जिसे मैंने अभी वैकल्पिक मापदंडों के साथ बनाया है।
new Object(x, y, z, meshType: MESH.BLENDER,
meshPath: "./meshes/foo",
serverToSyncWith: serverIP,
vertexShader: "./shaders/foo.vert",
physicsType: PHYSICS_ENGINE.RIGID_DESTRUCTIBLE,
health: health,
weight: weight)
...
विशेष रूप से, बिल्डर विधि नामों से निहित जानकारी को अभी तक अधिक मापदंडों द्वारा प्रतिस्थापित किया जाना है, और बारीकी से संबंधित मापदंडों के समूह में एक पैरामीटर के बारे में भूलना बहुत आसान है। वास्तव में, टुकड़ा shader गायब है, लेकिन आप ध्यान नहीं देंगे कि जब तक आप इसके लिए देखना नहीं जानते थे।
बेशक, यदि आपकी वस्तु के निर्माण में केवल एक से पांच तर्क लगते हैं, तो बिल्डर पैटर्न को शामिल करने की कोई आवश्यकता नहीं है, चाहे आपने नाम / वैकल्पिक पैरामीटर का उपयोग किया हो या नहीं।