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

> المشكلة: لديك كائن مرجعي (reference object) صغير جداً ونادراً ما يتغير، مما لا يبرر إدارة دورة حياته. الحل: قم بتحويله إلى كائن قيمة (value object).

## المشكلة

لديك كائن مرجعي (reference object) صغير جداً ونادراً ما يتغير، مما لا يبرر إدارة دورة حياته.

## الحل

قم بتحويله إلى كائن قيمة (value object).

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

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

* تتطلب دائماً طلب الكائن اللازم من وحدة التخزين.
* قد يكون من غير المريح العمل مع المراجع في الذاكرة.
* يعد العمل مع المراجع صعباً بشكل خاص، مقارنة بالقيم، في الأنظمة الموزعة والمتوازية.

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

## الفوائد

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

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

1. اجعل الكائن غير قابل للتغيير. يجب ألا يحتوي الكائن على أي دوال تعيين (setters) أو دوال أخرى تغير حالته وبياناته (قد تفيد طريقة [إزالة دالة التعيين](/remove-setting-method) هنا). المكان الوحيد الذي يجب أن تُعين فيه البيانات لحقول كائن القيمة هو المنشئ (constructor).
2. أنشئ دالة مقارنة لتتمكن من مقارنة قيمتين.
3. تحقق مما إذا كان بإمكانك حذف دالة المصنع (factory method) وجعل منشئ الكائن عاماً (public).
## Relations

**Opposite refactorings**

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

