استخرج الواجهات (Extract Interface)
المشكلة
يستخدم العديد من العملاء نفس الجزء من واجهة الصنف. حالة أخرى: عندما يوجد نفس الجزء من الواجهة في صنفين.
الحل
تقل هذا الجزء المتطابق إلى الواجهة الخاصة به.
مثال
قبل إعادة التصميم
بعد إعادة التصميم
لم إعادة التصميم؟
- تكون الواجهات مناسبة جدًا عندما تلعب الأصناف أدوارًا خاصة في حالات مختلفة. ويستخدم استخرج الواجهات لتحديد أي دور بوضوح.
- وتنشأ حالة مناسبة أخرى عندما تحتاج إلى وصف العمليات التي يجريها صنفُ ما على خادمه. إذا كان من المخطط أن يسمح في نهاية المطاف باستخدام خوادم من أنواع متعددة، يجب أن توفر كل الخوادم الواجهة.
من الجيد أن نعرف
هناك بعض التشابه بين استخراج الأصناف الفائقة واستخراج الواجهات.
يسمح استخراج الواجهات بعزل الواجهات المشتركة فقط، وليس الشيفرة المشتركة. وبعبارة أخرى، إذا احتوت الأصناف على شيفرة مكررة، فإن استخراج الواجهات لن يساعد على إزالة التكرار.
ومع ذلك، يمكن تخفيف هذه المشكلة بتطبيق استخراج الأصناف لنقل السلوك الذي يحتوي على التكرار إلى عنصرٍ منفصل وتفويضه بكل العمل. إذا كان السلوك المشترك كبيرًا في الحجم، يمكن دائمًا استخدام استخراج الأصناف الفائقة. وهو أسهل بالطبع، لكن تذكَّر أنه إذا سلكت هذا الطريق ستحصل على صنف أصل واحدٍ فقط.
آلية الحل
- أنشئ واجهة فارغة.
- عرِّف العمليات المشتركة في الواجهة.
- عرِّف الأصناف اللازمة لتنفيذ الواجهة.
- غير نوع التعريفات في شيفرة العميل حتى يستخدم الواجهة الجديدة.