استخرج الواجهات (Extract Interface)

من موسوعة حسوب
< Refactoring
مراجعة 14:38، 17 فبراير 2019 بواسطة Khaled-yassin (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: استخرج الواجهات (Extract Interface)}}</noinclude> == المشكلة == يستخدم العديد من العملاء نفس ا...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

المشكلة

يستخدم العديد من العملاء نفس الجزء من واجهة الصنف. حالة أخرى: عندما يوجد نفس الجزء من الواجهة في صنفين.

الحل

تقل هذا الجزء المتطابق إلى الواجهة الخاصة به.

مثال

قبل إعادة التصميم

يستخدم العديد من العملاء نفس الجزء من واجهة الصنف.
يستخدم العديد من العملاء نفس الجزء من واجهة الصنف.

بعد إعادة التصميم

تقل هذا الجزء المتطابق إلى الواجهة الخاصة به.
تقل هذا الجزء المتطابق إلى الواجهة الخاصة به.

لم إعادة التصميم؟

  1. تكون الواجهات مناسبة جدًا عندما تلعب الأصناف أدوارًا خاصة في حالات مختلفة. ويستخدم استخرج الواجهات لتحديد أي دور بوضوح.
  2. وتنشأ حالة مناسبة أخرى عندما تحتاج إلى وصف العمليات التي يجريها صنفُ ما على خادمه. إذا كان من المخطط أن يسمح في نهاية المطاف باستخدام خوادم من أنواع متعددة، يجب أن توفر كل الخوادم الواجهة.

من الجيد أن نعرف

هناك بعض التشابه بين استخراج الأصناف الفائقة واستخراج الواجهات.

يسمح استخراج الواجهات بعزل الواجهات المشتركة فقط، وليس الشيفرة المشتركة. وبعبارة أخرى، إذا احتوت الأصناف على شيفرة مكررة، فإن استخراج الواجهات لن يساعد على إزالة التكرار.

ومع ذلك، يمكن تخفيف هذه المشكلة بتطبيق استخراج الأصناف لنقل السلوك الذي يحتوي على التكرار إلى عنصرٍ منفصل وتفويضه بكل العمل. إذا كان السلوك المشترك كبيرًا في الحجم، يمكن دائمًا استخدام استخراج الأصناف الفائقة. وهو أسهل بالطبع، لكن تذكَّر أنه إذا سلكت هذا الطريق ستحصل على صنف أصل واحدٍ فقط.

آلية الحل

  1. أنشئ واجهة فارغة.
  2. عرِّف العمليات المشتركة في الواجهة.
  3. عرِّف الأصناف اللازمة لتنفيذ الواجهة.
  4. غير نوع التعريفات في شيفرة العميل حتى يستخدم الواجهة الجديدة.

انظر أيضًا

مصادر