Builder Pattern (Nhóm khởi tạo)
Mẫu thiết kế khởi tạo cho phép xây dựng các đối tượng phức tạp TỪNG BƯỚC MỘT. Cho phép tạo ra các loại và biểu diễn khác nhau của một đối tượng bằng cùng một đoạn code.
🔍 Dấu hiệu nhận biết
- Có một đối tượng lớn, phức tạp: ví dụ đơn hàng với nhiều thuộc tính về khách hàng, thời gian gửi hàng, ghi chú… → quá trình khởi tạo cần một Builder riêng.
- Đối tượng lớn nhưng đôi khi không cần toàn bộ thuộc tính → dùng các Builder khác nhau để xây đối tượng phù hợp với context.
Ví dụ
<?php
class Car {
private $model;
private $year;
private $color;
public function setModel($model) { $this->model = $model; }
public function setYear($year) { $this->year = $year; }
public function setColor($color) { $this->color = $color; }
public function __toString() {
return "{$this->color} {$this->year} {$this->model}";
}
}
class CarBuilder {
private $car;
public function __construct() { $this->car = new Car(); }
// Mỗi setter trả về $this → chain từng bước (fluent interface)
public function setModel($model) { $this->car->setModel($model); return $this; }
public function setYear($year) { $this->car->setYear($year); return $this; }
public function setColor($color) { $this->car->setColor($color); return $this; }
public function build() { return $this->car; }
}
$car = (new CarBuilder())
->setModel('Corolla')
->setYear(2020)
->setColor('Red')
->build();
echo $car; // Red 2020 CorollaLiên quan
- Factory Pattern, Singleton Pattern - cùng nhóm khởi tạo
- Encapsulation - Đóng gói - builder gói quá trình khởi tạo phức tạp