לדלג לתוכן

Inversion of control

מתוך ויקיפדיה, האנציקלופדיה החופשית
גרסה מ־16:59, 12 בדצמבר 2021 מאת 37.142.41.166 (שיחה) (דייקתי את הנושא, ניסוח)

היי לכולם אני יאירי ניני הייתי פעם גבר היום אני אישה3>

היום למדתי מה זה ממשק:)

אני מהנדסת תוכנה בכירה המנהלת שלי זאת שומי**

אני אוהבת פלינדרומיםcallback.

טכניקות מימוש

טכניקות מימוש מושפעות משפת התכנות הנבחרת. ב-Java ישנן כמה טכניקות בסיסיות למימוש היפוך שליטה:

  1. שימוש בתבנית העיצוב Factory method
  2. שימוש בתבנית העיצוב Service locator
  3. שימוש ב-dependency injection, לדוגמה:
    • הזרקה דרך ה-constructor
    • הזרקה דרך פונקציית (set (setter
    • הזרקת ממשק
  4. שימוש ב- contextualized lookup

דוגמאות

public class ServerFacade {
	public <K, V> V respondToRequest(K request) {
		if (businessLayer.validateRequest(request)) {
			DAO.getData(request);
			return Aspect.convertData(request);
		}
    
		return null;
	}
}

מתווה בסיסי זה ב-Java מדגים קוד הפועל על פי מתודולוגיית היפוך השליטה. עם זאת, חשוב לשים לב לכך ש-ServerFacade מתבסס על הרבה הנחות אודות הנתונים המוחזרים על ידי ה-Data Access Object) DAO). אף על פי שייתכן כי הנחות אלה הן תקינות בזמן מסוים, הן יוצרות צימוד בין המימוש של ServerFacade למימוש של DAO. תכנון היישום בצורה של היפוך שליטה יעביר לגמרי את השליטה לאובייקט ה-DAO. נקבל את הקוד הבא:

public class ServerFacade {
	public <K, V> V respondToRequest(K request, DAO dao) {
		return dao.getData(request);
	}
}

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

ממשקי תכנות יישומים המשתמשים בהיפוך שליטה

SAX הוא דוגמה לממשק תכנות יישומים (API) אשר משתמש בהיפוך שליטה בכל מקום (לאחר אתחול). באופן כללי SAX יעיל יותר מ-DOM, אבל לעיתים קרובות DOM נחשב לנוח יותר לתכנות בגלל שהוא לא מחייב שימוש בהיפוך שליטה.

ראו גם

קישורים חיצוניים

הסבר על Ioc - הבלוג של רון קליין