Template Method Pattern
בכל חברת Enterprise שהייתם - פיננסים, לוגיסטיקה, ביטוח, e-commerce - יש מערכת שמייצרת Exports. CSV לחשבאים, JSON לצוות ה-API, XML לשותף עסקי, PDF למנהל. כל Export עושה בדיוק אותם 5 שלבים: מתחבר למקור הנתונים, שולף Records, מעבד כל Record, מפרמט את הפלט, וסוגר את החיבור. רק שלב הפרמוט משתנה. אבל אם אין Pattern נכון, מישהו מועתק את כל ה-class 4 פעמים ושינה רק מתודה אחת. ועכשיו יש לכם 4 copies של אותו Connection Logic, אותו Error Handling, אותו Retry Mechanism - ואם צריך לשנות את ה-Retry לבצע Exponential Backoff, משנים את זה ב-4 מקומות ושוכחים אחד.
זה בדיוק הבעיה ש-Template Method Pattern פותר: כתבו את שלד האלגוריתם פעם אחת, ואת השלב שמשתנה - תנו ל-Subclass להחליט.
Template Method הוא ה-Pattern שיושב בלב כל Framework מוצלח. כשDjango, Spring, JUnit, ו-Rails כולם מאפשרים לכם "להשלים" חלק מהלוגיקה מבלי לכתוב את כל ה-Flow מאפס - הם משתמשים ב-Template Method. אתם ממלאים "חורים" שה-Framework הגדיר. ה-Framework שולט ב-Flow; אתם מספקים ה-Implementation הספציפי.