سحب التابع لأعلى (Pull Up Method)
المشكلة
تحتوي الأصناف الفرعية على توابع تؤدي نفس العمل.
الحل
جعل التوابع متطابقة ثم نقلها إلى الصنف الأعلى ذي الصلة.
مثال
قبل إعادة التصميم
يحتوي الصنفان الفرعيان Soldier
و Tank
على التابع ()getHealth
الذي يؤدي نفس العمل:
بعد إعادة التصميم
نقل التابع ()getHealth
إلى الصنف Unit
الأب وإزالته من الأصناف الفرعية:
لم إعادة التصميم؟
تنمو الأصناف الفرعية وتتطور بشكل مستقل عن بعضها البعض، مما يتسبب في ظهور حقول وتوابع متطابقة (أو شبه متطابقة).
فوائد تطبيق الحل
- التخلص من تكرار الشيفرة. إذا كنت بحاجة إلى إجراء تغييرات على تابع ما، فمن الأفضل أن تفعل ذلك في مكان واحد من أن تبحث عن جميع نسخ التابع في الأصناف الفرعية.
- ويمكن أيضا استخدام تقنية إعادة التصميم هذه إذا أعاد صنفٌ فرعي تعريف تابع من الصنف الأب له، لسبب ما، ولكنه يؤدي نفس العمل في الأساس.
آلية الحل
- تحقق من التوابع المماثلة في الأصناف الفرعية. إذا لم تكن متطابقة، قم بتنسيقها لتتطابق مع بعضها البعض.
- إذا استخدَمت التوابعُ مجموعة مختلفة من المعاملات، ضع المعاملات في الشكل الذي تريد رؤيته في الصنف العلوي.
- انسخ التابع إلى الصنف العلوي (الصنف الأب). هنا قد تجد أن شيفرة التابع تستخدم الحقول والتوابع التي توجد فقط في الأصناف الفرعية وبالتالي ليست متاحة في الصنف العلوي. ولحل هذا، يمكنك:
- بالنسبة للحقول: استخدم إما سحب الحقل لأعلى أو التغليف الداخلي للحقول لإنشاء المُتلقيات والضوابط في الأصناف الفرعية؛ ثم عرِّف هذه المُتلقيات بشكل تجريدي في الأصناف العلوية.
- بالنسبة للتوابع: استخدام إما سحب التابع أو عرِّف لهم تابعًا مجردًا في الصنف العلوي (لاحظ أن الصنف سيصبح مجردًا إذا لم يكن كذلك مسبقًا).
- أزِل التابع من الصنف الفرعي.
- تحقق من المواقع التي يستدعى فيها التابع. قد تكون قادرًا في بعض الأماكن على استبدال استخدام الصنف الفرعي بالصنف الأب.
انظر أيضًا
- دفع التابع لأسفل (Push Down Method).
- سحب الحقل لأعلى (Pull Up Field).
- تكوين قالب تابع (Form Template Method).
- الشيفرة المكررة (Duplicate Code).