Inversion of Control ו Dependency Injection

11 בספטמבר 2014

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

צלילה אל תוך LINQ

10 בספטמבר 2014

LINQ היא טכנולוגיה המאפשרת לנו לתשאל נתונים בעזרת קוד C#. הכוונה במילה 'לתשאל' היא לכך שיש יותר מחמישים אופרטורים המאפשרים למיין, לסנן, לאחד וכו' נתונים. למשל אם נרצה לקבל מתוך רשימת עובדים את העובדים שהם מנהלי מחלקות, נעשה זאת מן הסתם בעזרת LINQ. אז איך LINQ עובד? כידוע C# היא שפה סטטית, והטיפוסים (types) צריכים להיות קבועים ומוגדרים. ולכן, אם נרצה למשל ליצור מתודה בשם Where, שתחזיר לנו אובייקט מטיפוס Employee, נצטרך לדאוג לך שמתודת where מכירה את הטיפוס שלנו. באופן מפתיע אנחנו רואים שLINQ תומכת בכל סוגי המשתנים, אפילו אם הרגע הגדרנו אותם. ...
תגובה אחת

Decorator

בפוסט זה אדגים שני שימושים נפוצים בתבנית העיצוב Decorator. Decorator היא תבנית עיצוב די נפוצה ושימושית ביותר. היא מאפשר הוספת פונקציונליות לאובייקט קיים בצורה דינאמית, מבלי לשנות את האובייקט המקורי. אפשרות זו מונעת ירושה מיותרת או פותרת מקרים בהם אין אפשרות לירושה בכלל (Sealed). עוד דבר שניתן לומר על תבנית זו הוא שהיא מתאימה ל Open Closed Principle- עיקרון זה של תכנות מונחה עצמים אומר שClass צריך להיות פתוח להרחבה, אבל סגור לשינויים. כלומר, סביר להניח שהושקעה מחשבה רבה על עיצוב הClass שלנו, ולכן לא נרצה לשנות אותו. אך מצד שני יתכן מצב שמישהו יצטרך באיזשהו...
תגובה אחת