---
title: "استبدال قيمة البيانات بكائن"
type: "refactoring-technique"
slug: "replace-data-value-with-object"
url: "http://localhost:3000/ar/replace-data-value-with-object.md"
category: "تنظيم البيانات"
description: "المشكلة: فئة (أو مجموعة فئات) تحتوي على حقل بيانات. هذا الحقل له سلوكه الخاص وبياناته المرتبطة به. الحل: إنشاء فئة جديدة، ووضع الحقل القديم وسلوكه في هذه الفئة، ثم تخزين كائن الفئة في الفئة الأصلية."
---
# استبدال قيمة البيانات بكائن

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

## المشكلة

فئة (أو مجموعة فئات) تحتوي على حقل بيانات. هذا الحقل له سلوكه الخاص وبياناته المرتبطة به.

## الحل

أنشئ فئة جديدة، وضع الحقل القديم وسلوكه في هذه الفئة، ثم خزن كائن الفئة في الفئة الأصلية.

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

تعتبر إعادة الهيكلة هذه في الأساس حالة خاصة من [استخلاص الفئة](/extract-class). ما يجعلها مختلفة هو سبب إعادة الهيكلة.

في [استخلاص الفئة](/extract-class)، لدينا فئة واحدة مسؤولة عن أشياء مختلفة ونريد تقسيم مسؤولياتها.

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

لذلك، نقوم بإنشاء فئة جديدة وننقل إليها كلاً من الحقل والبيانات والسلوكيات ذات الصلة.

## الفوائد

* يحسن الترابط داخل الفئات. توجد البيانات والسلوكيات ذات الصلة داخل فئة واحدة.

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

قبل البدء في إعادة الهيكلة، تحقق مما إذا كانت هناك مراجع مباشرة للحقل من داخل الفئة. إذا كان الأمر كذلك، فاستخدم [التغليف الذاتي للحقل](/self-encapsulate-field) لإخفائه في الفئة الأصلية.

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

**Similar techniques**

- [استخراج الفئة](/ar/extract-class.md)
- [إدخال كائن المعاملات (Introduce Parameter Object)](/ar/introduce-parameter-object.md)
- [استبدال المصفوفة بكائن (Replace Array with Object)](/ar/replace-array-with-object.md)
- [استبدال الدالة بكائن دالة](/ar/replace-method-with-method-object.md)

**Eliminates smells**

- [الكود المكرر](/ar/smells/duplicate-code.md)

