Builder pattern-i mürəkkəb obyektin qurulmasını onun yekun formasından ayırır. Çoxlu parametrli bir konstruktor əvəzinə kiçik adlı addımlar çağırır və build() ilə bitirirsiniz. O, obyektin çoxlu ixtiyari hissəsi olduqda, bir neçə addımda yığıldıqda və ya bütövlükdə yoxlanılmalı olduqda faydalıdır.
Teleskopik konstruktor
Sonuncu ixtiyari parametri vermək üçün əvvəlkilərin hamısını ötürmək lazımdır. Request("GET", "/users", None, {"page": 2}, None, 10, 3) çağırışı oxunmazdır, 10 və 3-ün yerini dəyişmək isə xəta vermir.
class Request:
def __init__(self, method, url, headers=None, params=None,
body=None, timeout=30, retries=0):
self.method, self.url = method, url
self.headers = headers or {}
self.params = params or {}
self.body = body
self.timeout, self.retries = timeout, retries
def __repr__(self):
return (f"{self.method} {self.url} params={self.params} "
f"timeout={self.timeout} retries={self.retries}")
print(Request("GET", "/users", None, {"page": 2}, None, 10, 3))GET /users params={'page': 2} timeout=10 retries=3Axıcı interfeyslə addım-addım qurmaq
Hər addım bir hissəni saxlayır və self qaytarır, ona görə çağırışlar "cümləyə" çevrilir. build() məhsulu, burada parametr tuple-ı ilə SQL sətrini yaradır. Dəyərlər ? yer tutucuları ilə ötürülür və heç vaxt SQL-ə birləşdirilmir.