Dependency Injection - הזרקת תלויות
Martin Fowler כתב ב-2004: "The question is not whether to have dependencies - every non-trivial program has them. The question is who controls them." כשclass יוצר את ה-dependencies שלו בעצמו עם new, הוא שולט בהם - ואתם לא יכולים לtest אותו, לא יכולים להחליף implementations, לא יכולים לscale את ה-design. Dependency Injection הופך את השליטה: הclass מצהיר מה הוא צריך, ומשהו חיצוני מספק את זה.
זהו אחד מהפטרנים שנראים פשוטים על הנייר אבל משנים כל כך הרבה בפועל. לא רק ב-testability - אלא ב-architecture בכלל. הוא מכריח אתכם להגדיר גבולות ברורים בין components, לחשוב על interfaces לפני implementations, ולהפריד בין "מה המערכת עושה" ל-"איך המערכת עושה את זה".