---
title: "تنزيل التابع (Push Down Method)"
type: "refactoring-technique"
slug: "push-down-method"
url: "http://localhost:3000/ar/push-down-method.md"
category: "التعامل مع التعميم"
description: "المشكلة: هل السلوك المطبق في الفئة الفائقة يُسخدم من قِبل فئة فرعية واحدة فقط (أو عدد قليل منها)؟ الحل: انقل هذا السلوك إلى الفئات الفرعية."
---
# تنزيل التابع (Push Down Method)

> المشكلة: هل السلوك المطبق في الفئة الفائقة يُستخدم من قِبل فئة فرعية واحدة فقط (أو عدد قليل منها)؟ الحل: انقل هذا السلوك إلى الفئات الفرعية.

## المشكلة

هل السلوك المطبق في الفئة الفائقة يُسخدم من قِبل فئة فرعية واحدة فقط (أو عدد قليل منها)؟

## الحل

انقل هذا السلوك إلى الفئات الفرعية.

## دواعي إعادة الهيكلة

في البداية، كان الهدف من تابع معين أن يكون عاماً لجميع الفئات، ولكنه في الواقع يُسخدم في فئة فرعية واحدة فقط. يمكن أن يحدث هذا الموقف عندما تفشل الميزات المخطط لها في التحقق.

ويمكن أن تحدث مثل هذه المواقف أيضاً بعد الاستخراج الجزئي (أو الإزالة) للوظائف من التسلسل الهرمي للفئات، مما يترك تابعاً يُسخدم في فئة فرعية واحدة فقط.

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

## الفوائد

* يحسن تماسك الفئات. حيث يقع التابع في المكان الذي تتوقع رؤيته فيه.

## كيفية إعادة الهيكلة

1. صرح بالتابع في فئة فرعية وانسخ الكود الخاص به من الفئة الفائقة.
2. أزل التابع من الفئة الفائقة.
3. ابحث عن جميع الأماكن التي يُسخدم فيها التابع وتأكد من أنه يُستدعى من الفئة الفرعية المطلوبة.
## Relations

**Helps you do**

- [استخراج الفئة الفرعية](/ar/extract-subclass.md)

**Similar techniques**

- [تنزيل الحقل (Push Down Field)](/ar/push-down-field.md)

**Opposite refactorings**

- [رفع التابع (Pull Up Method)](/ar/pull-up-method.md)

**Eliminates smells**

- [الوصية المرفوضة](/ar/smells/refused-bequest.md)

