Builder Pattern (Kurucu Desen), karmaşık nesnelerin adım adım oluşturulmasına olanak sağlar. Bu sayede nesnenin nasıl oluşturulacağı detaylarından bağımsız bir şekilde, farklı konfigürasyonlarla nesneler üretilebilir.
“Bir nesne nasıl oluşturulacak?” sorusunu çözer.
Ne İçin Kullanılır?
-
Karmaşık nesnelerin oluşturulmasını kontrol altına almak
-
Aynı oluşturma süreciyle farklı çeşitlerde nesneler üretmek
-
Nesne oluşturma kodunu sınıfın dışına taşımak
-
Yapıcı fonksiyonlara (constructor) çok fazla parametre geçmeyi engellemek
Nerelerde Kullanılır?
-
PDF veya rapor üretici sınıflar
-
Form builder (örneğin HTML form oluşturucular)
-
SQL query builder (Laravel Query Builder gibi)
-
Mail veya mesaj şablon sistemleri
-
API isteği oluşturan sınıflar
User
nesnesi oluşturmak istiyoruz. Bu nesne opsiyonel alanlara sahip olabilir.
<?php
class User {
public $name;
public $email;
public $age;
public function showInfo() {
echo "Ad: {$this->name}, Email: {$this->email}, Yaş: {$this->age}\n";
}
}
<?php
class UserBuilder {
private $user;
public function __construct() {
$this->user = new User();
}
public function setName($name) {
$this->user->name = $name;
return $this;
}
public function setEmail($email) {
$this->user->email = $email;
return $this;
}
public function setAge($age) {
$this->user->age = $age;
return $this;
}
public function build() {
return $this->user;
}
}
<?php
$builder = new UserBuilder();
$user = $builder->setName("Ali")
->setEmail("ali@example.com")
->setAge(28)
->build();
$user->showInfo();
Ad: Ali, Email: ali@example.com, Yaş: 28
Avantajları
-
Kod okunabilirliğini artırır (
method chaining
) -
Yapıcıda çok fazla parametre geçme sorununu çözer
-
Gereksiz bağımlılıkları azaltır
-
Test etmeyi kolaylaştırır