---
title: "استبدال الفئة الفرعية بحقول"
type: "refactoring-technique"
slug: "replace-subclass-with-fields"
url: "http://localhost:3000/ar/replace-subclass-with-fields.md"
category: "تنظيم البيانات"
description: "المشكلة: لديك فئات فرعية تختلف فقط في دوالها (التي تعيد قيمًا ثابتة). الحل: استبدل الدوال بحقول في الفئة الأب واحذف الفئات الفرعية."
---
# استبدال الفئة الفرعية بحقول

> المشكلة: لديك فئات فرعية تختلف فقط في دوالها (التي تعيد قيمًا ثابتة). الحل: استبدل الدوال بحقول في الفئة الأب واحذف الفئات الفرعية.

## المشكلة

لديك فئات فرعية تختلف فقط في دوالها (التي تعيد قيمًا ثابتة).

## الحل

استبدل الدوال بحقول في الفئة الأب واحذف الفئات الفرعية.

## لماذا نقوم بإعادة الهيكلة

في بعض الأحيان، تكون إعادة الهيكلة هي الحل الأمثل لتجنب كود النوع (type code).

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

قد تصبح هذه التغييرات ضرورية بعد نقل كمية كبيرة من الوظائف من تسلسل هرمي للفئات إلى مكان آخر. لم يعد التسلسل الهرمي الحالي ذو قيمة كبيرة وأصبحت فئاته الفرعية مجرد وزن زائد.

## الفوائد

* يبسط بنية النظام. يعد إنشاء فئات فرعية أمرًا مبالغًا فيه إذا كان كل ما تريد القيام به هو إرجاع قيم مختلفة في دوال مختلفة.

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

1. طبق تقنية [استبدال الباني بدالة مصنع](/replace-constructor-with-factory-method) على الفئات الفرعية.
2. استبدل استدعاءات باني الفئة الفرعية باستدعاءات دالة المصنع للفئة الفائقة.
3. في الفئة الفائقة، أعلن عن حقول لتخزين قيم كل من دوال الفئة الفرعية التي تعيد قيمًا ثابتة.
4. أنشئ بانيًا محميًا للفئة الفائقة لتهيئة الحقول الجديدة.
5. أنشئ بانيات الفئة الفرعية الحالية أو عدلها بحيث تستدعي الباني الجديد للفئة الأب وتمرر القيم ذات الصلة إليه.
6. قم بتنفيذ كل دالة ثابتة في الفئة الأب بحيث تعيد قيمة الحقل المقابل. ثم قم بإزالة الدالة من الفئة الفرعية.
7. إذا كان لباني الفئة الفرعية وظائف إضافية، فاستخدم تقنية [ضمنية الدالة](/inline-method) لدمج الباني في دالة المصنع للفئة الفائقة.
8. احذف الفئة الفرعية.
## Relations

**Similar techniques**

- [استبدال الباني بتابع مصنع (Replace Constructor with Factory Method)](/ar/replace-constructor-with-factory-method.md)

**Opposite refactorings**

- [استبدال كود النوع بفئات فرعية](/ar/replace-type-code-with-subclasses.md)

