الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Adapter Pattern

مغلق
بدأه nardien28 في 30 أكتوبر 2006 · 0 رد · 846 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1

حبيت احط الأعضاء بجو النقاش بالنسبة لـ Adapter Pattern....

انت مبرمج جافا لديك واجهة برمجية API (لا على التعيين معتمدة أو غير معتمدة )

فيها صف ما (صف a )... فيه طريقه ما (طريقة x ) تتطلب برامتر لواجهة أو صف مجرد ما aI .

ولديك صف اخر (صف b ) حصلت عليه جاهز (لا تمتلك الـSource Code ) يرث الواجهة bI .

وتتطلب وظيفية تطبيقك تمرير هذا الصف الى الطريقة x .....

79d21d4070.jpg

كيف سيحدث هذا !!!! والصف b لا يرث الصف الواجهة aI بل واجهة اخرى bI لا تمت بصلة للواجهة aI

لن نغير أي كلمة في الصف a

لن نغير أي كلمة في صفوف وطرق الـAPI .... عادة لايتوافر الـSource Code

والعمل ؟؟؟؟

سنخترع صف جديد Adapter مهمته من اسمه (الملائمة) ان يلائم أو يكيف الصف b ليناسب الصف a أي سنقوم بحيلة برمجية تجعل الصف b شكليا يرث الواجهة aI

نجعل الصف Adapter يرث الواجهة aI وينشيء غرضا من الصف b

ونكتب سلوك كل طريقة من طرق aI هو استدعاء ما يناسبها من طرق b

أي اغلف طرق الصف b بطرق الواجهة aI

أو بكلمة أخرى أجعل الصف b يتنكر بزي aI ليتسنى له المرور في الطريقة x دون ان ينزعج الـCompiler

هكذا حصلت على صف Adapter يملك خاصية امكانية التمرير عبر الطريقة x كبرامتر من نمط aI

وفي نفس الوقت ما زالت متاحة طرق الصف b للاستعمال بأسماءها الحقيقة .

الشكل التالي يبين البنية التصميمية للنموذج Adapter Pattern

57ab72b507.jpg

نفس الشرح السابق (بعد ما لائمته Adapting it ليناسب الشكل في الصورة )

الصف Client يستخدم الصف المجرد أو الواجهة Target ( الواجهة المطلوب التحويل اليها )

ولديك صف Adaptee (المطلوب ملائمته) يرث واجهة ما (لا على التعيين )

ننشيء صف جديد Adapter يرث Target وننشيء فيه غرض من الصف Adaptee

كما نرى من الشكل الواجهة Target فيها الطريقة Request علينا كتابة سلوكها في Adapter ولكن سلوكها سيكون هو استدعاء الطريقة SpecificRequestالخاصة بالصف adaptee .

هكذا ضربنا عصفوين بالحجر Adapter

أولا : حصلنا وظيفية أو سلوك الصف adaptee (بأسماءها الحقيقية )

ثانيا : حصلنا على صف يمكن استخدامه و تمريره في الصف Client (يرث الواجهة Target)

يوجد شكل أخر للنموذج التصميمي Adapter Pattern:

ffd530bf76.jpg

هو بالاستفادة من خاصية الوراثة المتعددة للواجهات في جافا بجعل الصف Adapter يرث الواجهة adaptee والواجهة Target

نكتب السلوك الفعلي لطرق الواجهة adaptee

ونجعل سلوك طرق الواجهة Target هي استدعاء لطرق الواجهة adaptee المشابهة لها بالوظيفية .

يعتمد اختيارك على احد الشكلين لـ Adapter Pattern حسب الصنف المتوافر لديك هل هو >واجهة< أو> صف يرث واجهة <.

تم تعديل هذه المشاركة بواسطة nardien28 في 30 أكتوبر 2006 في 09:54

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

هذا الموضوع مغلق.

مواضيع مشابهة