سؤال

التكرارات الممكنة:
أعضاء البيانات العامة مقابل getters ، المستقلين
الغرض من الأعضاء الخاصين في الفصل

ما هو استخدام getters والمستقبين عندما يمكنك فقط جعل المتغيرات الخاصة بك علنية وتجنب متاعب مثل خطوط مثل A.setVariableX(A.getVariableY())?

هل كانت مفيدة؟

المحلول

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

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

نصائح أخرى

يمكن لـ Getters and Petters القيام بالتحقق من الصحة ، والتثبيت الكسول ، في حين أن الأعضاء العامين لا يمكنهم ذلك.

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

لأنه في بعض الأحيان هناك بعض القيود حول ما قد يكون متغيرك والتحقق من ذلك عند ضبطه.

على سبيل المثال ، إذا لم يكن عمرك غير مسموح به ليكون -1 ، فستتحقق من ذلك في Setter الخاص بك.

if(value >= 0)
{
   _age = value;
}
else
{
  throw new InvalidAgeException("Age may not be less than 0");
}

ينطبق المستقلين والغزاء على الخصائص ، أيا كانت "الخصائص" في الكود الخاص بك.

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

إنه جزء من مبدأ التغليف. يمكنك استخدام المستقلين و Getters كواجهة للتفاعل مع كائنك بحيث يمكنك - على سبيل المثال - إضافة أي وظيفة لاحقًا (مثل التحقق من صحة بيانات الإدخال) دون لمس الرمز الذي يستخدم الفئة (ES).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top