مبدأ هوليوود ينص على "لا تتصل بنا، نحن من سنتصل بك" أو "Don't call us, we'll call you"

ما علاقته بالبرمجة؟!

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

الحل هو تطبيق مبدأ هوليوود بأن يكون كل جزء مسؤول عن نفسه، أنا لن أتصل بك لكن إذا حدث "حدث معين" اتصل بي فسأعرف ما يجب علي فعله. وهذا يتم عن طريق كتابة callback functions ليتم تنفيذها عند حدوث هذا "الحدث المعين".

مثال على callback function (jQuery)

$("button").click(function(){
    $("p").hide("slow", function(){
        alert("The paragraph is now hidden");
    });
});

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

مثال آخر: دالة java.awt.Component.paint

التي سترسم الجرافكس على الشاشة. الدالة فقط يتم تعريفها (اختياريا) لكن من الذي يقوم بعمل call لها؟

للاستزادة:

Book: Head First Design Pattern