Kotlin Tutorials

إتقان كائنات Kotlin المصاحبة: دليل شامل

Spread the love

توفر Kotlin ميزة قوية، وهي companion object، لتوفير نهج منظم لإدارة وظائف مستوى الصنف. هذا يتناقض مع طرق static في Java، حيث يوفر كلا النهجين مزايا و اعتبارات للمطورين.

محتويات

طرق Java الثابتة (static)

في Java، تنتمي الطرق static إلى الصنف نفسه، وليس إلى مثيلات الصنف. يتم الوصول إليها مباشرة باستخدام اسم الصنف:


public class MyClass {
    public static int add(int a, int b) {
        return a + b;
    }
}

// الاستخدام:
int sum = MyClass.add(5, 3);

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

كائنات Kotlin المصاحبة (companion object)

يوفر companion object في Kotlin بديلاً أنيقاً. يتم إعلانه داخل صنف، ويعمل كحاوية للدووال والخصائص المرتبطة بالصنف، وليس بمثيلات محددة. الوصول إليه مشابه لأعضاء static في Java:


class MyClass {
    companion object {
        fun add(a: Int, b: Int): Int {
            return a + b
        }
        val PI = 3.14159
    }
}

// الاستخدام:
val sum = MyClass.add(5, 3)
val piValue = MyClass.PI

يسمح companion object في Kotlin بالدووال والخصائص (بما في ذلك القابلة للتغيير)، ويمكنه حتى تنفيذ واجهات. للحصول على قابلية قراءة أفضل في المشاريع الكبيرة، يمكنك تسمية الكائن المصاحب:


class MyClass {
    companion object MyCompanionObject {
        fun add(a: Int, b: Int): Int = a + b
    }
}

// الاستخدام:
val sum = MyClass.MyCompanionObject.add(5, 3)

متى نستخدم كائنات Kotlin المصاحبة

كائنات companion object قوية ولكن يجب استخدامها بحكمة. تشمل السيناريوهات المثالية:

  • طرق المصنع: إنشاء مثيلات بتكوينات محددة.
  • دووال المرافق: توفير دوال مساعدة مرتبطة بالصنف.
  • الثوابت: تعريف الثوابت المرتبطة بالصنف.
  • تنفيذ النمط المفرد (singleton) (بحذر): يمكن أن ينشئ companion object خاص مثيلاً واحداً، على الرغم من أن إعلان object في Kotlin يُفضل عمومًا للأنماط المفردة.
  • تنفيذ الواجهات: السماح للصنف بتنفيذ واجهة من خلال الكائن المصاحب.

متى نتجنب استخدام كائنات Kotlin المصاحبة

يمكن أن يؤدي الإفراط في الاستخدام إلى مشاكل في التصميم. تجنب كائنات companion object عندما:

  • الإفراط في الاستخدام: إذا كانت معظم وظائف الصنف موجودة في companion object، فراجع تصميم الصنف. قد تكون مجموعة دوال أبسط كافية.
  • الغموض في النطاق: يمكن أن يؤدي الاستخدام المفرط إلى طمس الخطوط الفاصلة بين دوال المثيل ودوال مستوى الصنف، مما يقلل من وضوح التعليمات البرمجية.

يوفر companion object في Kotlin طريقة أنظف وأكثر تنظيماً لإدارة وظائف مستوى الصنف من طرق static في Java. ومع ذلك، فإن التطبيق المدروس يضمن تعليمات برمجية نظيفة وقابلة للقراءة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *