سؤال

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

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

ماهذا الهراء؟؟ هذا يبدو فظيعا !!
ما هو الاستعارة العقلية الجيدة التي استخدموها للتفكير في كيفية عمل أنظمة DI؟

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

المحلول

الصلبة الصور التحفيزية هي مصدر جيد.

metaphor of the dependency injection principle

نصائح أخرى

فكر في رجل نبيل وباتره. يوفر الخدم (إطار عمل DI) للرجل أي خدمات (تبعيات خارجية) يحتاجها عند الطلب (والبعض الآخر ، مثل القهوة الصباحية ، عند "التهيئة" :-)) ؛ يستهلك الرجل المحترم (صفك) الخدمات ولا يهتم من أين أتوا ، طالما يفي بمتطلباته (تنفيذ واجهة معينة).

أو إذا كنت ترغب في جعلها أقرب إلى استعارةك ، فإن فصلك هو الطفل ، وإطار DI هو الأم ، والألعاب هي المكونات الأخرى. لا يهتم الطفل من أين تأتي الألعاب ، طالما أنها تستطيع أن تلعب بالطريقة التي تريدها معهم.

من وجهة نظري ، فإن الفرق بين DI و Non-Di فيما يتعلق بالاستعارة هو مع أنظمة غير DI ، كل شخص يصنع ألعابه الخاصة-عليهم أن يعرفوا كيفية صنعها ويمكنهم استخدام الألعاب التي يقومون بها فقط. مع DI ، يستخدم الشخص الألعاب التي يتم إعطاؤها. إنهم لا يعرفون كيفية صنعها ، لكن يمكنهم اللعب مع أي ألعاب يتم إعطاؤهم طالما أنهم يعرفون كيف تتصرف اللعبة.

ليغوس.

فكر في كتلة LEGO كمكون للبرامج يكشف واجهات واحدة أو أكثر (المطبات الصغيرة في الأعلى) ولديها واحد أو أكثر من الوسيطات أو وسيطات مُنشئ (الثقوب الموجودة في الأسفل).

عندما تشتري صندوقًا من Legos ، فإن الكتل لا تأتي مسبقًا (شاقة). هم مكونات مستقلة. يمكنك بعد ذلك تجميعها (سلكها) عن طريق توصيل الواجهات (المطبات) إلى المستقلين/المُنشئين (الثقوب). كل كتلة لا تعرف شيئًا عن الكتل الأخرى مباشرة. هناك حاجة إلى شيء آخر غير الكتلة لتجميعها - أي (أو Main () أو ملف تكوين الربيع ، إلخ).

أعلم ... هذا ينهار قليلاً لأن ليغوس لديها إلى حد كبير واجهة موحدة - لكنها تعمل بالنسبة لي :-)

أستخدم نظام الكمبيوتر. لديك كتلة نظام ، وأنت (DI) توصيلها شاشة ولوحة مفاتيح وفأرة. تعرف كتلة النظام فقط أن الشاشة عبارة عن جهاز DVI ، لكن لا يهتم بالتحديد. إنه يعرف كيفية استخدام الماوس USB ، لكنه لا يعرف أو يهتم بالطقس ، فهو فأر بصري أو يولد الكرة.

أنت - إطار DI.
كتلة النظام - هو النظام الذي يتم تقديمه.
مراقبة/الماوس/لوحة المفاتيح - الخدمات التي تقدمها DI (YOU) إلى كتلة النظام.

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

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

الأمر كله عن الساموراي والأسلحة. حاول التحقق من تسعة: http://ninject.org/. انتقل إلى شخصية "زيارة الدوجو" للحصول على استعارة مثيرة للاهتمام. لست متأكدًا مما إذا كان هذا هو ما قصدته ولكنه مبدع رغم ذلك.

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