ผู้สร้างมีประโยชน์มากที่สุดเมื่อวัตถุของคุณต้องการอาร์กิวเมนต์ / การพึ่งพาจำนวนมากเพื่อเป็นประโยชน์หรือคุณต้องการอนุญาตวิธีการสร้างวัตถุที่หลากหลาย
จากด้านบนของหัวของฉันฉันสามารถนึกภาพใครบางคนอาจต้องการ "สร้าง" วัตถุในเกม 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)
...
โดยเฉพาะอย่างยิ่งข้อมูลที่บอกเป็นนัยโดยชื่อเมธอดตัวสร้างจะต้องถูกแทนที่ด้วยพารามิเตอร์ที่มากกว่าและมันง่ายกว่ามากที่จะลืมเกี่ยวกับหนึ่งพารามิเตอร์ในกลุ่มของพารามิเตอร์ที่เกี่ยวข้องอย่างใกล้ชิด อันที่จริงชิ้นส่วนขาดหายไป แต่คุณจะไม่สังเกตว่าถ้าคุณไม่รู้จักที่จะมองมัน
แน่นอนถ้าวัตถุของคุณใช้เวลาเพียงหนึ่งถึงห้าข้อโต้แย้งในการสร้างไม่จำเป็นต้องมีรูปแบบตัวสร้างที่เกี่ยวข้องไม่ว่าคุณจะตั้งชื่อ / พารามิเตอร์ทางเลือกหรือไม่ก็ตาม