Sobes.tech
Middle+

Builder dizayn şablonu nə üçün lazımdır?

sobes.tech Süni İntellekt

AI-dan cavab

Builder nümunəsi mürəkkəb obyektlərin addım-addım qurulması üçün lazımdır. Bu, obyektin yaradılma məntiqini onun təqdimatından ayırmağa imkan verir.

İstifadəsinin əsas üstünlükləri:

  • Məntiqin ayrılması: Obyektin yaradılma prosesi ayrıca sinfə (qurucu) köçürülür.
  • Esneklik: Eyni qurucu istifadə edərək müxtəlif seçim dəstləri ilə obyektlər yarada bilər.
  • Kodun oxunaqlığı: Obyektin yaradılma ardıcıllığı daha aydın olur.
  • "Teleskopik konstruktörlər"dən qaçınma: Müxtəlif parametr sayına malik çox sayda yüklənmiş konstruktörlərin yaranmasının qarşısını alır.

Nümunə:

<?php
// Çətin obyektin - maşının nümayişi
class Car {
    private $engine;
    private $color;
    private $gps;

    public function setEngine($engine) {
        $this->engine = $engine;
    }

    public function setColor($color) {
        $this->color = $color;
    }

    public function setGps($gps) {
        $this->gps = $gps;
    }

    public function showDetails() {
        echo "Mühərrik: " . $this->engine . ", Rəng: " . $this->color . ", GPS: " . ($this->gps ? "Bəli" : "Xeyr") . "\n";
    }
}

// Car üçün qurucu sinif
class CarBuilder {
    private $car;

    public function __construct() {
        $this->car = new Car();
    }

    public function setEngine($engine) {
        $this->car->setEngine($engine);
        return $this; // Özünü qaytarır, zəncirli çağırışlar üçün
    }

    public function setColor($color) {
        $this->car->setColor($color);
        return $this;
    }

    public function setGps($gps) {
        $this->car->setGps($gps);
        return $this;
    }

    public function build() {
        return $this->car;
    }
}

// Qurucudan istifadə
$builder = new CarBuilder();
$car1 = $builder->setEngine("V8")->setColor("Qırmızı")->setGps(true)->build();
$car1->showDetails();

$car2 = (new CarBuilder())->setEngine("V6")->setColor("Mavi")->build(); // GPS olmadan
$car2->showDetails();

Bu nümunədə, CarBuilder addım-addım Car obyektini yaradan qurucudur. Müştəri kodu yalnız qurucu ilə əlaqə saxlayır, obyektin daxili strukturu haqqında məlumatı yoxdur.