Builder Pattern
הסתכלו על ה-Constructor הזה:
typescript
new EmailMessage(
'user@example.com',
'Welcome!',
null,
true,
false,
['attachment1.pdf'],
'high',
'utf-8',
null,
true,
new Date()
)כמה דקות לוקח להבין מה true, false, true אומר כאן? אם אתם צריכים לחפש את ה-Constructor Signature כדי להבין - יש בעיה. זה נקרא Telescoping Constructor Anti-Pattern - Constructor עם כל כך הרבה פרמטרים שאי אפשר לזכור את הסדר שלהם.
הבעיה לא נוצרת ביום אחד. מתחילים עם Constructor פשוט - 3 פרמטרים, כולם ברורים. ואז מוסיפים Timeout אופציונלי. ואז Retry Count. ואז Cache TTL. ואז Priority. ואז Compression Flag. ואחרי שנה - Constructor של 10 פרמטרים שאי אפשר לקרוא. הצמיחה הדרגתית היא מה שהופך את זה לקשה לזהות - כל הוספה הגיונית בנפרד, ויחד יוצרת Anti-Pattern.
Constructor של 11 פרמטרים מול Fluent Builder
Telescoping Constructor
new EmailMessage(to, subject, null, true, false, [...], 'high', 'utf-8', null, true, new Date()) - מה כל boolean אומר? מה הסדר? Bug בהמתנה.
Builder
new EmailBuilder().to(...).subject(...).highPriority().attach(...).build() - קריא כמשפט, IDE Autocomplete על כל שלב.