نمط التفويض

في هندسة البرمجيات ، نمط التفويض هو نمط تصميم موجه للكائنات يسمح بتركيب الكائنات للوصول لإعادة استخدام الكود البرمجي نفسه مثل الميراث .

في التفويض، يعالج الكائن الطلب عن طريق التفويض إلى كائن ثانٍ ( المفوض ). المفوض هو كائن مساعد ، ولكن مع السياق الأصلي . باستخدام دعم التفويض المعتمد على اللغة، يتم ذلك ضمنيًا من خلال نفس (الكملة المفتاحية self او this) المفوض يشير إلى الكائن الأصلي (المرسل)، وليس المفوض (الكائن المتلقي). في نمط التفويض، يتم تحقيق ذلك عن طريق تمرير الكائن الأصلي بشكل صريح إلى المفوض، كقيمة للطريقة (قيمة للدالة البرمجية).Gamma et al. 1994 غالبًا ما يتم استخدام "التفويض" بشكل فضفاض للإشارة إلى المفهوم المميز لإعادة التوجيه ، حيث يستخدم الكائن المرسل ببساطة العضو المقابل في الكائن المتلقي، ويتم تقييمه في سياق الكائن المتلقي ، وليس الكائن الأصلي.

تستخدم هذه المقالة "إرسال الكائن/كائن الاستقبال" للكائنين، بدلاً من "استقبال الكائن/التفويض"، مع التركيز على الكائنات التي ترسل وتستقبل استدعاء التفويض، وليس الاستدعاء (استدعاء الدالة) الأصلي.

 تعريف 
في مقدمة كتاب عصابة الأربعة لجاما وآخرون. 1994، تم تعريف التفويض على النحو التالي:

 مثال 
في المثال أدناه (باستخدام لغة برمجة Kotlin )، يقوم الصنف (كلاس) Window بتفويض استدعاء area()(المساحة) إلى كائن المستطيل الداخلي الخاص بها (المفوض الخاص بها).class Rectangle(val width: Int, val height: Int) {
    fun area() = width * height
}

class Window(val bounds: Rectangle) {
    // Delegation
    fun area() = bounds.area()
}

 دعم اللغة 
تتمتع بعض اللغات بدعم خاص للتفويض المدمج. على سبيل المثال، في لغة برمجة Kotlin ، يتم تفويض by المفتاحية  إلى واجهة كائن آخر:interface ClosedShape {
  fun area(): Int
}

class Rectangle(val width: Int, val height: Int) : ClosedShape {
  override fun area() = width * height
}

// The ClosedShape implementation of Window delegates to that of the Rectangle that is bounds
class Window(private val bounds: Rectangle) : ClosedShape by bounds

 أنظر أيضا 

 الجانب برمجة
 التفويض (الحوسبة)
 نمط التصميم
 نمط الواجهة

 مراجع 

 روابط خارجية 

 ما هو التفويض ، ويكي ويكي ويب
 وفد على كود روزيتا

تصنيف:نماذج تصميم البرمجيات