نمط التفويض
في هندسة البرمجيات ، نمط التفويض هو نمط تصميم موجه للكائنات يسمح بتركيب الكائنات للوصول لإعادة استخدام الكود البرمجي نفسه مثل الميراث .
في التفويض، يعالج الكائن الطلب عن طريق التفويض إلى كائن ثانٍ ( المفوض ). المفوض هو كائن مساعد ، ولكن مع السياق الأصلي . باستخدام دعم التفويض المعتمد على اللغة، يتم ذلك ضمنيًا من خلال نفس (الكملة المفتاحية self
او this) المفوض يشير إلى الكائن الأصلي (المرسل)، وليس المفوض (الكائن المتلقي). في نمط التفويض، يتم تحقيق ذلك عن طريق تمرير الكائن الأصلي بشكل صريح إلى المفوض، كقيمة للطريقة (قيمة للدالة البرمجية). [1] غالبًا ما يتم استخدام "التفويض" بشكل فضفاض للإشارة إلى المفهوم المميز لإعادة التوجيه ، حيث يستخدم الكائن المرسل ببساطة العضو المقابل في الكائن المتلقي، ويتم تقييمه في سياق الكائن المتلقي ، وليس الكائن الأصلي.
تستخدم هذه المقالة "إرسال الكائن/كائن الاستقبال" للكائنين، بدلاً من "استقبال الكائن/التفويض"، مع التركيز على الكائنات التي ترسل وتستقبل استدعاء التفويض، وليس الاستدعاء (استدعاء الدالة) الأصلي.
تعريف
في مقدمة كتاب عصابة الأربعة لجاما وآخرون. 1994، تم تعريف التفويض على النحو التالي:
this
في C++ وself
في Smalltalk. لتحقيق نفس التأثير مع التفويض، يمرر المستقبل نفسه إلى المفوض ليتيح للعملية المفوضة الإشارة إلى المستقبِل.[2]»مثال
في المثال أدناه (باستخدام لغة برمجة 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
المفتاحية [3] إلى واجهة كائن آخر:
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
أنظر أيضا
مراجع
- Gamma et al. 1994
- Gamma، Erich؛ Helm، Richard؛ Johnson، Ralph؛ Vlissides، John (1995). Design patterns : elements of reusable object-oriented software (ط. 14. print.). Reading, Mass.: Addison-Wesley. ص. 20. ISBN:0-201-63361-2.
- "Delegation - Kotlin Programming Language". Kotlin. مؤرشف من الأصل في 2023-06-08. اطلع عليه بتاريخ 2019-03-23.
- بوابة علم الحاسوب
روابط خارجية
- ما هو التفويض ، ويكي ويكي ويب
- وفد على كود روزيتا