ה strategy pattern מציעה אלטרנטיבה לביטויי תנאי עבור בחירת סוג של התנהגות רצויה מתוך מספר סוגים. כאשר מספר התנהגויות נכללות באותו ה
class , קשה להימנע מלהשתמש בביטויי תנאי על מנת לבחור את סוג ההתנהגות הרצוי. בכך שאנו מרכזים את ההתנהגות ב
class נפרד אנו מבטלים את הצורך בביטויי תנאי. לדוגמה, ללא strategy ים הקוד לשבירת טקסט לשורות היה נראה כך:
void Composition::Repair() {
switch(_breakingStrategy) {
case SimpleStrategy:
ComposeWithSimpleCompositor();
break;
case TeXStrategy:
ComposeWithTeXCompositor();
break;
// ...
}
// merge results with existing composition,
if necessary
}
ה strategy pattern מבטלת את הצורך בביטוי התנאי בכך שהיא שולחת את משימת שבירת השורות לאובייקט strategy:
void Composition::Repair() {
_compositor->Compose();
// merge results with existing composition,
// if necessary
}
קוד המכיל ביטויי תנאי רבים לעתים מרמז על הצורך להשתמש ב strategy pattern.