הסבר מצוין להזרקת תלות (היפוך שליטה)

קראתי הרבה הסברים על הזרקת תלות או DI (שבעבר נקראה היפוך שליטה) והעקרון ההוליוודי הקשור אליו ("אל תתקשר אלינו, אנחנו נתקשר אליך."). כולם נוטים להיות לא ברורים, או משום שהם מתעמקים מיד בהסברים מפורטים ביותר, או שהם קושרים את ההסבר באופן ספציפי לטכנולוגיה מסוימת. כזה שהתבנית אבודה או שהפשטות שלה היא. הנה ההסבר הברור ביותר שמצאתי - ערוך מעט לצורך קיצור (מהמעיין המעולה מאוד, 2. מהדורה מאת קרייג וולס):

"כל יישום לא סודי מורכב משני כיתות או יותר שמשתפות פעולה זו עם זו בכדי לבצע היגיון עסקי כלשהו. באופן מסורתי, כל אובייקט אחראי לקבלת התייחסויות משלו לאובייקטים איתם הוא משתף פעולה (התלות שלו). אובייקטים מקבלים את התלות שלהם בזמן היצירה על ידי ישות חיצונית כלשהי שמתאמת כל אובייקט במערכת. במילים אחרות, תלות מוזרקת לאובייקטים. "

אני מוצא את זה ברור מאוד.

הזרקת תלות נקראה במקור Inversion of Control (IoC) מכיוון שרצף הבקרה הרגיל יהיה שהאובייקט מוצא את האובייקטים שהוא תלוי בהם בעצמו ואז קורא להם. כאן זה הפוך: התלות נמסרת לאובייקט כשהוא נוצר. זה ממחיש גם את העיקרון ההוליוודי בעבודה: אל תתקשר סביב התלות שלך, אנו ניתן לך אותם כשאנחנו זקוקים לך.

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

האתגר של DI הוא לכתוב יישום שלם באמצעותו. כמה שיעורים הם לא עניין גדול, אבל אפליקציה שלמה הרבה יותר קשה. עבור יישומים שלמים, לעתים קרובות אתה רוצה מסגרת לניהול התלות והאינטראקציה בין אובייקטים. מסגרות DI מונעות לרוב על ידי קבצי XML המסייעים לציין מה להעביר למי ומתי. אביב הוא מסגרת Java DI בשירות מלא; מסגרות DI קלות אחרות כוללות את NanoContainer ואת PicoContainer הקל עוד יותר.

ברוב המסגרות הללו יש מדריכים טובים שיעזרו למתחילים למצוא את דרכם.

סיפור זה, "הסבר מצוין להזרקת תלות (היפוך שליטה)" פורסם במקור על ידי JavaWorld.