Pembangun paling berguna ketika objek Anda membutuhkan banyak argumen / dependensi untuk menjadi berguna, atau Anda ingin mengizinkan berbagai cara membangun objek.
Dari atas kepala saya, saya bisa membayangkan seseorang mungkin ingin "membangun" objek dalam game 3D seperti ini:
// 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)
...
Saya berpendapat contoh ini lebih mudah dibaca dengan metode builder yang saya buat sekarang dibandingkan dengan parameter opsional:
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)
...
Secara khusus, informasi yang tersirat oleh nama metode pembangun harus diganti dengan lebih banyak parameter, dan jauh lebih mudah untuk melupakan satu parameter dalam kelompok parameter yang terkait erat. Sebenarnya, shader fragmen hilang, tetapi Anda tidak akan menyadarinya kecuali Anda tahu untuk mencarinya.
Tentu saja, jika objek Anda hanya membutuhkan satu hingga lima argumen untuk dikonstruksikan, tidak perlu melibatkan pola pembangun, terlepas apakah Anda telah menamai atau parameter opsional.