Builder Pattern Nedir? PHP ile Anlaşılır Uygulama

 

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



PHP ile Builder Pattern Uygulaması

Senaryo: Kullanıcının bilgisini tutan bir User nesnesi oluşturmak istiyoruz. Bu nesne opsiyonel alanlara sahip olabilir.

1. Ürün sınıfı (Product)


<?php
class User {
public $name;
public $email;
public $age;

public function showInfo() {
echo "Ad: {$this->name}, Email: {$this->email}, Yaş: {$this->age}\n";
}
}


2. Builder sınıfı


<?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;
}
}


Kullanım:


<?php
$builder = new UserBuilder();
$user = $builder->setName("Ali")
->setEmail("ali@example.com")
->setAge(28)
->build();

$user->showInfo();


Çıktı:


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























Related Posts

Builder Pattern Nedir? PHP ile Anlaşılır Uygulama
4/ 5
Oleh