delegation
זהו תהליך שבו אובייקט מסויים "מעביר" סמכות מסויימת שיוחסה לו לאובייקט אחר על ידי קריאה למתודה עליו. (delegation - האצלת סמכות). לדוגמא:
class Sheff { MinimunWageCook _cook; public void makeSteak() { //.. making steak } public void makeSalad() { // boring... _cook.makeSalad(); } }
השימוש ב delegation ב OOP הוא עצום, לכל אובייקט יש אחריות משלו ויש אובייקטים נוספים שאיתם הוא מתקשר. לפעמים בגלל שינויים בדרישות האפליקציה אחריות עוברת מאובייקט אחד לאחר כשכל אובייקט יכול לבצע משהו בעצמו או להעביר את האחריות לאובייקט אחר איתו הוא מתקשר. inheritance זו תופעה הרבה פחות נפוצה שהשימוש המושכל בה הוא במספר מקרים מצומצם. למעשה כמעט כל שימוש ב inheritance ניתן להחליף ב delegation (קרא על decorator pattern למשל) והתוצאה בד"כ מוצלחת יותר. כך שהורשה היא שלב התפתחותי יותר מאשר עיצוב מוגמר.