ConstructiCat Logo
CodeBust.
Browse section ▾

إزالة الوسيط (Remove Middle Man).

Problem

تحتوي الفئة على عدد كبير جداً من التوابع التي تقوم ببساطة بالتفويض لكائنات أخرى.

Solution

احذف هذه التوابع واجبر العميل على استدعاء التوابع النهائية مباشرة.

##Example

قبل
Remove Middle Man - Before
بعد
Remove Middle Man - After

##Why Refactor

لوصف هذه التقنية، سنستخدم المصطلحات من تقنية إخفاء المفوض (Hide Delegate)، وهي:

  • الخادم (Server) هو الكائن الذي يمتلك العميل حق الوصول المباشر إليه.

  • المفوض (Delegate) هو الكائن النهائي الذي يحتوي على الوظائف التي يحتاجها العميل.

هناك نوعان من المشاكل:

  1. لا تقوم فئة الخادم بأي عمل بنفسها وتتسبب ببساطة في تعقيد غير ضروري. في هذه الحالة، فكر ملياً فيما إذا كانت هذه الفئة مطلوبة على الإطلاق.

  2. في كل مرة تتم فيها إضافة ميزة جديدة إلى المفوض، تحتاج إلى إنشاء تابع تفويض لها في فئة الخادم. وإذا تم إجراء الكثير من التغييرات، فسيكون هذا أمراً متعباً للغاية.

##How to Refactor

  1. أنشئ تابع جلب (Getter) للوصول إلى كائن فئة التفويض (Delegate class) من كائن فئة الخادم (Server class).

  2. استبدل استدعاءات التوابع المفوضة في فئة الخادم باستدعاءات مباشرة للتوابع في فئة التفويض.