دیزاین پترن Builder از دسته سازنده در مجموعه ۲۳ پترن مشهور Gang of Four است. ساخت یک آبجکت یا Query پیچیده را به گامهای مستقل تقسیم میکند تا تعداد زیادی پارامتر در یک سازنده انباشته نشود.
سناریوی واقعی در فروشگاه
در صفحه فیلتر محصولات میتوان تنظیم قیمت، دسته، موجودی و مرتبسازی را بهترتیب روی یک Query Builder اعمال کرد.
نمونه در PHP
$query = Product::query();
$query->where('active', true)
->when($category, fn ($q) => $q->where('category_id', $category))
->when($minPrice, fn ($q) => $q->where('price', '>=', $minPrice));
$products = $query->paginate(20);
نمونه در پایتون
class ProductQuery:
def __init__(self): self.filters = {}
def in_category(self, value):
self.filters['category'] = value
return self
def available(self):
self.filters['in_stock'] = True
return self
چه زمانی مناسب نیست؟
Builder با Factory یکسان نیست. اولی مراحل ساخت را مدیریت میکند و دومی معمولا انتخاب نوع آبجکت را.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.