سؤال

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

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

شكرًا!

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

المحلول

تميل فصول الخدمة الخاصة بي إلى الحصول على عدد قليل من متغيرات المثيلات ...

هذا ليس بالضرورة رمزًا. إذا كانت خدمتك تتطلب العديد من التبعيات لإكمال عملها ، فهذه مجرد حقيقة.

... يبدو أنهم يقومون بالكثير من العمل (أي لديهم الكثير من الطرق).

هل من المستحسن إنشاء خدمات أكثر تركيزًا؟

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

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

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

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

نصائح أخرى

أود أن أوصي القراءة على حقن التبعية ، انعكاس السيطرة وما شابه.

إليكم مقالة فاولر: http://martinfowler.com/articles/injection.html, ، على الرغم من أنني وجدت دائمًا أن يكون قليلاً فوق القمة. سأحاول المشي عبر برنامج تعليمي يمثل باستخدام حاوية DI/IOC.

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