"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > العلاقة أو القدرة، يتم استخدام كلا المعيارين

العلاقة أو القدرة، يتم استخدام كلا المعيارين

تم النشر بتاريخ 2024-11-08
تصفح:279

Relationship or ability, both of these criteria are used

في المجتمع، عند تقييم قدرة الشخص وقيمته، غالبًا ما يكون هناك معياران مختلفان: أحدهما "يعتمد على العلاقات" والآخر "يعتمد على القدرة". ويتجسد كلا المعيارين في ثقافات وصناعات وقيم شخصية مختلفة، ولكل منهما مؤيديه ومنتقديه.

يوجد في لغات البرمجة نوعان من المعايير التي تنظم التعليمات البرمجية بطرق مختلفة، وتربط هياكل البيانات بالوظائف. ستناقش هذه المقالة بإيجاز تطبيق ومبدأ عمل هذين المعيارين المشتركين.

نموذج الطبقة

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


class Animal {
    move() { return 'move' }
}
class Monkey extends Animal {
    jump() { return 'jump' }
}
class Human extends Monkey {
    write() { return 'write' }
}


extends يمكن أن تساعدنا الكلمات الأساسية في تحديد فئة جديدة تمتد من الفئات الأخرى. يمكننا الحصول على سلسلة النموذج الأولي مثل هذا:


let me = new Human()
let proto = me.__proto__
let r = []

while (proto !== null) {
    r.push(proto.constructor.name)
    proto = proto.__proto__
}


سنحصل على r مثل هذا: ["إنسان"، "قرد"، "حيوان"، "كائن"]. عندما نستدعي طريقة ما، فإن نجاح استدعاء الطريقة يعتمد على ما إذا كان هناك تعريف مطابق في سلسلة النموذج الأولي. على سبيل المثال، إذا اتصلت بـ me.move()، فسيكون لها تعريف في فئة Animal، وسينجح الاتصال.

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

النموذج القائم على الكفاءة

بالمقارنة مع النموذج القائم على العلاقات، فإن النموذج القائم على الكفاءة أبسط بكثير. طالما أن المثيل يلبي سمة معينة، يمكن للطريقة المقابلة أن تعمل على المثيل بغض النظر عن العلاقة بين المثيل.


let me = {
    moveable: true,
    freezable: false
}

function move(x) { return x.moveable ? 'move' : undefined }
function freeze(x) { return x.freezable ? 'freeze' : undefined }


في هذا النموذج، تكون البيانات والأساليب مستقلة عن بعضها البعض. الميزة هي أنها موجزة ومباشرة، ولكن العيب واضح، بسبب استقلالية الطريقة والبيانات، من الصعب تجاوز تعريف الطريقة.

ملخص

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

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/linjiezhang/relationship-or-ability-both-of-these-criteria-are-used-1dbd?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3