أنماط الاستخدام/حالات الاستخدام لـ DI أو متى تبدأ استخدامه

StackOverflow https://stackoverflow.com/questions/3066396

سؤال

لست متأكدًا من حالات الاستخدام التي يجب على المرء استخدام DI في التطبيق. أعلم أن خدمات الحقن مثل PlaceService أو CalculationService إلخ يناسبها بشكل جيد للغاية ، لكن إذا قمت أيضًا بإنشاء كائنات النطاق الخاصة بي مع di مثل User؟ ما إذا كان User لديه مُنشئ واحد فقط يتطلب اسمًا أوليًا. هل هذا قابل للحل مع DI؟

هل يجب علي استخدام DI لإنشاء مثيلات لواجهات تعيين/قائمة أم أن هذا المبالغة النقية؟

أنا استخدم guice في المقام الأول.

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

المحلول

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

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

لدى Guice حل محدد لنوع المشكلة التي تطرحها كائنات مثل كائن المستخدم الذي يسمى AssistedInject, ، على الرغم من أن الأشياء المماثلة ممكنة أيضًا مع حاويات خفيفة الوزن أخرى أو تستخدم شيئًا ما أنماط البناء أو المحول.

نصائح أخرى

الجواب من قبل IG0774 هو نقطة انطلاق جيدة. بالإضافة إلى ذلك ، أود أن أقدم قاعدة الإبهام هذه:

في مصطلحات تصميم يحركه المجال, ، يجب عليك دي ل خدمات, ، ولكن ليس ل جهات أو كائنات القيمة.

بمعنى آخر ، تتناسب DI بشكل جيد مع كائنات طويلة الأجل من الناحية المفاهيمية التي لا أساس لها والتي عادة ما يكون هناك رقم واحد أو رقم معروف قيد الاستخدام.

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