Strategy Pattern
יש לכם מערכת Sorting. בהתחלה הכל ב-Arrays קטנים - Bubble Sort עושה את העבודה. אחר כך מגיעים Arrays של מיליון איברים - צריך Merge Sort. ואז מגיעים Arrays כמעט ממוינים - Insertion Sort מהיר שם. ואז מגיעים Integers קטנים - Counting Sort מנצח. כל אלגוריתם מתאים לנסיבות אחרות.
הבעיה: איך מחליפים אלגוריתם בזמן ריצה, לפי המצב, בלי שה-Caller צריך לדעת כלום על האלגוריתמים?
זה Strategy Pattern - הגדרת משפחת אלגוריתמים, Encapsulation של כל אחד, והחלפה ביניהם בזמן ריצה.
ה-Pattern נקרא "Strategy" כי כל Implementation הוא אסטרטגיה שונה לפתרון אותה בעיה. Credit Card, PayPal, ו-Bitcoin - שלוש אסטרטגיות לפתרון בעיית "כיצד מגבים תשלום." Context - ה-PaymentProcessor - לא אכפת לו מה האסטרטגיה. הוא רק יודע שיש Strategy שיודעת לבצע תשלום. זו ה-Separation of Concerns שהPattern מספק.