---
title: "تغيير القيمة إلى مرجع"
type: "refactoring-technique"
slug: "change-value-to-reference"
url: "http://localhost:3000/ar/change-value-to-reference.md"
category: "تنظيم البيانات"
description: "المشكلة: لديك العديد من النسخ المتطابقة لفئة واحدة تحتاج إلى استبدالها بكائن واحد. الحل: قم بتحويل الكائنات المتطابقة إلى كائن مرجعي واحد."
---
# تغيير القيمة إلى مرجع

> المشكلة: لديك العديد من النسخ المتطابقة لفئة واحدة تحتاج إلى استبدالها بكائن واحد. الحل: قم بتحويل الكائنات المتطابقة إلى كائن مرجعي واحد.

## المشكلة

لديك العديد من النسخ المتطابقة لفئة واحدة تحتاج إلى استبدالها بكائن واحد.

## الحل

قم بتحويل الكائنات المتطابقة إلى كائن مرجعي واحد.

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

في العديد من الأنظمة، يمكن تصنيف الكائنات إما كقيم أو مراجع.

* **المراجع (References)**: عندما يقابل كائن حقيقي واحد كائناً واحداً فقط في البرنامج. عادة ما تكون المراجع كائنات مثل المستخدم/الطلب/المنتج/إلخ.
* **القيم (Values)**: عندما يقابل كائن حقيقي واحد كائناً متعددة في البرنامج. يمكن أن تكون هذه الكائنات تواريخ، أو أرقام هواتف، أو عناوين، أو ألوان، وما شابه ذلك.

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

## الفوائد

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

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

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

**Opposite refactorings**

- [تغيير المرجع إلى قيمة](/ar/change-reference-to-value.md)

