|fav המועדפים שלי |pad מחברת אישית|talckback תגובות הקוראים|poll השתתף בסקר |
  
|about אודות|eitan home page   תפריט איתן
the strategy pattern



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

patterns

חלק ראשון
המטרה, המוטיבציה, הפתרון
חלק שני
המבנה הכללי, המשתתפים, מתי נשתמש, יחסי העבודה, בעד ונגד
חלק שלישי
מימוש, קוד לדוגמה
כללי
המטרה:
הגדרת משפחה של אלגוריתמים, ריכוז של כל אלגוריתם ב
class משלו, כך שניתן יהיה להחליף ביניהם בהתאם לצורך. Strategy מאפשרת לאלגוריתמים להשתנות באופן שהוא בלתי תלוי בקליינט שמשתמש בהם.

ידועה גם בתור:
Policy

מוטיבציה:
קיימים אלגוריתמים רבים עבור שבירת stream של טקסט לשורות. הכנסת כל האלגוריתמים הללו ל
class ים שנזקקים להם אינה רצויה ממספר סיבות:
  • קליינטים אשר נזקקים לשבירת טקסט לשורות נהיים יותר מסובכים אם הם כוללים בתוכם את הקוד לכך. הם גדלים ונהיים קשים יותר לתחזוקה, בייחוד אם הם תומכים במספר אלגוריתמים לשבירה לשורות.
  • אלגוריתמים שונים יתאימו לשימוש במקרים שונים בזמנים שונים. לא נרצה לתמוך במספר אלגוריתמים לשבירת שורות אם רב הזמן לא נזדקק לכולם.
  • כאשר האלגוריתמים לשבירת שורות הם חלק אינטגרלי מהקליינט, קשה יותר להוסיף אלגוריתמים חדשים ולשנות אלגוריתמים קיימים.
כעת אנחנו יודעים מה לא לעשות. אבל מה כן לעשות??

למעלה
הפתרון:
נוכל להימנע מבעיה זו על ידי הגדרת
class ים שמרכזים בתוכם אלגוריתמי שבירת שורות שונים. אלגוריתם שמרוכז בתוך class באופן כזה נקרא strategy.

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

אם אינכם זוכרים את הסימונים בדיאגרמה זה הזמן להתרענן. נניח שהמחלקה Composition אחראית לתחזוקה ועדכון של שבירת השורות בטקסט שמוצג בעורך כלשהו. האסטרטגיות לשבירת שורות אינן ממומשות במחלקה Composition. הן ממומשות בנפרד על ידי subclasses של המחלקה האבסטרקטית Compositor. ה subclass ים של Compositor מממשים אסטרטגיות שונות:
  • SimpleCompositor - מממש אסטרטגיה פשוטה שקובעת את נקודות שבירת השורות אחת אחת לפי הסדר.
  • TeXCompositor - מממש את אלגוריתם הTeX עבור מציאה של נקודות השבירה. אסטרטגיה זו מנסה לבצע אופטימיזציה בצורה גלובלית, כלומר פסקה שלמה בו זמנית.
  • ArrayCompositor - מממש אסטרטגיה שבוחרת שבירות כך שבכל שורה יש מספר קבוע של פריטים. זה שימושי למשל במקרים שנרצה לסדר אוסף של צלמיות (icons) בשורות.


למעלה







 
מה בעמוד:
 
המטרה
המוטיבציה
הפתרון