ראשי > strategy pattern > חלק שני
The Strategy

המבנה הכללי:
להלן המבנה הכללי של ה Strategy pattern. אם אינכם זוכרים את הסימונים בדיאגרמה זה הזמן
להתרענן .

לחצו להגדלה
לחץ להגדלה - strategy

למעלה
מיהם החברים בחגיגה?:
  • Strategy (Compositor) - מגדיר ממשק משותף לכל האלגוריתמים הנתמכים. המחלקה Context תשתמש בממשק זה כל מנת לקרוא לאלגוריתם שמוגדר על ידי ConcreteStrategy.
  • ConcreteStrategy (SimpleCompositor, etc.) - מממש את האלגוריתם תוך שימוש בממשק של Strategy.
  • Context (Composition) - מכיל אובייקט ConcreteStrategy שמוכנס אליו. מחזיק הצבעה לאובייקט Strategy (להצבעה זו נבצע את ההשמה של ה ConcreteStrategy). יתכן והוא יגדיר ממשק שיאפשר ל Strategy להיכנס ל data שלו.
למעלה
מתי נשתמש בstrategy pattern?:
  • כאשר הרבה class ים שקשורים זה לזה שונים אחד מהשני רק בהתנהגות שלהם. Strategy ים מספקים דרך לקבוע class אחד שבוחר התנהגות אחת מתוך מספר התנהגויות.
  • כאשר נצטרך וריאציות שונות של אותו אלגוריתם. למשל, יתכן ונצטרך להגדיר אלגוריתמים דומים שמספקים יחסי זמן-מקום שונים. במקרה זה ניתן להשתמש ב strategy ים כאשר הווריאנטים השונים של האלגוריתם ממומשים כהיררכית מחלקות של אלגוריתמים.
  • כאשר אלגוריתם משתמש ב data שהקליינט לא אמור לדעת עליה. נשתמש ב strategy pattern כדי להימנע מלחשוף מבני נתונים מורכבים שספציפיים לאלגוריתם עצמו.
  • כאשר class מגדיר מספר התנהגויות, והן מופיעות כמספר conditional statements בפעולות שלו. במקום שיהיו לנו ביטויי תנאי רבים, נכניס כל אחת מתוצאות התנאי ל strategy class משלה.
למעלה
יחסי העבודה:
  • Strategy ו Context מתקשרים ביניהם על מנת ליישם את האלגוריתם הנבחר. ה Context יכול להעביר ל Strategy את כל ה data הדרושה לאלגוריתם, בזמן הקריאה לאלגוריתם. באופן אלטרנטיבי, ה Context יכול להעביר את עצמו כארגומנט עבור הפעולות של Strategy. זה מאפשר ל Strategy לתקשר עם ה Context בחזרה (להוציא מידע מתוכו וכו'), ככל שנדרש.
  • ה Context מעביר בקשות מהקליינטים שלו ל Strategy שלו. בדרך כלל הקליינטים ייצרו אובייקט ConcreteStrategy ויעבירו אותו ל Context. לאחר מכן הקליינטים באים במגע עם ה Context בלבד. לעתים קרובות יש משפחה של מחלקות ConcreteStrategy שהקליינט יכול לבחור מהן.
למעלה
יתרונות וחסרונות:
ל strategy pattern יש את היתרונות והחסרונות הבאים:
למעלה







 
מה בעמוד:
 
המבנה
המשתתפים
מתי נשתמש
יחסי העבודה
בעד ונגד