Oluşturucular, nesnenizin yararlı olması için çok sayıda bağımsız değişkene / bağımlılığa ihtiyaç duyduğunda veya nesneyi oluşturmanın birçok farklı yoluna izin vermek istediğinizde en kullanışlıdır.
Başımın üstünden, birinin 3D oyundaki nesneleri şöyle inşa etmek isteyebileceğini hayal edebiliyorum:
// 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)
...
Bu örneğin, şu anda oluşturduğum oluşturucu yöntemleri ile isteğe bağlı parametrelerle olduğundan daha okunabilir olduğunu iddia ediyorum:
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)
...
Özellikle, oluşturucu yöntem adları tarafından ima edilen bilgilerin yerine daha fazla parametre konulmalıdır ve yakından ilişkili parametreler grubundaki bir parametreyi unutmak çok daha kolaydır. Aslında, parça gölgelendirici eksik, ancak aramayı bilmediğiniz sürece bunu fark etmeyeceksiniz.
Tabii ki, nesneniz oluşturmak için yalnızca bir ila beş argüman alırsa, adlandırılmış / isteğe bağlı parametreleriniz olsun ya da olmasın, oluşturucu kalıbını dahil etmeye gerek yoktur.