Prototype Pattern
דמיינו מערכת שמנהלת Templates של Email Campaigns. יש לכם Template בסיסי עם לוגו, צבעים, Footer משפטי ו-Layout - 40 שדות של Configuration שנטענו מ-DB ומקבצי JSON. כל Campaign ספציפית מבוססת על Template הזה עם שינויים קטנים: כותרת שונה, גוף שונה, תאריך שונה. מה עדיף - לבנות כל Campaign מאפס ולטעון מחדש את כל ה-Configuration, או לשכפל את ה-Template הקיים ולשנות רק מה שצריך?
זו השאלה שה-Prototype Pattern עונה עליה.
ה-Pattern נקרא Prototype לא בגלל ש-JavaScript משתמש ב-Prototype Chain - הם קשורים, אבל הPattern הוא רחב יותר. הוא קרוי כך כי ה-Object הראשוני הוא "פרוטוטיפ" - מודל לחיקוי. כמו פרוטוטיפ פיזי בייצור, שמשכפלים ממנו עותקים שניתן לשנות, ה-Prototype Pattern מגדיר Object בסיסי אחד ומרשה ליצור עותקים מהירים ממנו.
500 Campaigns ביום - new מול Clone
new בכל פעם
500 Campaigns × 40 DB calls = 20,000 בקשות I/O. כל Campaign 500ms+. Latency שערורייתי.
Prototype + Clone
40 בקשות לטעינת Template אחד. 500 Clone Operations של מילישניות. Throughput פי 100.