ConstructiCat Logo
CodeBust.
Browse section ▾

استبدال التفويض بالوراثة.

Problem

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

Solution

جعل الفئة وارثة للفئة المفوضة، مما يجعل دوال التفويض غير ضرورية.

##Example

قبل
استبدال التفويض بالوراثة - قبل
بعد
استبدال التفويض بالوراثة - بعد

##Why Refactor

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

في مثل هذه الحالة، إذا استبدلت التفويض بالوراثة، فستقوم بتطهير الفئة من عدد كبير من دوال التفويض وتوفر على نفسك عناء إنشائها لكل دالة جديدة في فئة التفويض.

##Benefits

  • يقلل من طول الكود. لم تعد كل دوال التفويض هذه ضرورية.

##How to Refactor

  1. اجعل الفئة فئة فرعية (subclass) من فئة التفويض.

  2. ضع الكائن الحالي في حقل يحتوي على مرجع لكائن التفويض.

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

  4. استبدل جميع المراجع إلى حقل التفويض بمراجع إلى الكائن الحالي.

  5. قم بإزالة حقل التفويض.