إزالة الوسيط (Remove Middle Man).
تحتوي الفئة على عدد كبير جداً من التوابع التي تقوم ببساطة بالتفويض لكائنات أخرى.
احذف هذه التوابع واجبر العميل على استدعاء التوابع النهائية مباشرة.
##مثال
class Person {
Person getManager() { return department.getManager(); }
}class Person {
Department getDepartment() { return department; }
}
manager = person.getDepartment().getManager();##لماذا نعيد الهيكلة
لوصف هذه التقنية، سنستخدم المصطلحات من تقنية إخفاء المفوض (Hide Delegate)، وهي:
-
الخادم (Server) هو الكائن الذي يمتلك العميل حق الوصول المباشر إليه.
-
المفوض (Delegate) هو الكائن النهائي الذي يحتوي على الوظائف التي يحتاجها العميل.
هناك نوعان من المشاكل:
-
لا تقوم فئة الخادم بأي عمل بنفسها وتتسبب ببساطة في تعقيد غير ضروري. في هذه الحالة، فكر ملياً فيما إذا كانت هذه الفئة مطلوبة على الإطلاق.
-
في كل مرة تتم فيها إضافة ميزة جديدة إلى المفوض، تحتاج إلى إنشاء تابع تفويض لها في فئة الخادم. وإذا تم إجراء الكثير من التغييرات، فسيكون هذا أمراً متعباً للغاية.
##كيفية إعادة الهيكلة
-
أنشئ تابع جلب (Getter) للوصول إلى كائن فئة التفويض (Delegate class) من كائن فئة الخادم (Server class).
-
استبدل استدعاءات التوابع المفوضة في فئة الخادم باستدعاءات مباشرة للتوابع في فئة التفويض.