سؤال

أنا أحب فكرة وجود واجهات تنفيذ منفصلة.ولكن كيف منفصل ؟ هي واجهة تعريفات منفصلة .صافي الجمعية ؟ هل لديك مشروع واحد أن يعرف كل الواجهات من أجل حل ؟ وإلا هل هناك مشاكل مع تبعيات دائرية من واجهات?

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

المحلول

ضع نطاقك الكائنات واجهات في فصل "المجال" الجمعية.
هذه الجمعية لا ينبغي أبدا الرجوع إلى أي شيء ولكن جوهر .صافي الجمعيات.

وبهذه الطريقة يمكنك الحصول على بيئة نظيفة الانفصال من المجال الخاص بك/نموذج الخدمة الخاص بك التنفيذ.

تحرير:
http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

نصائح أخرى

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

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

يفضل إبقاء الأكثر شيوعا أو بسيطة تطبيقات واجهة في مجلد فرعي (و مساحة) بعد اسم واجهة.

\project\
\project\IAppender.cs
\project\Appender\
\project\Appender\FileAppender.cs
\project\Appender\ConsoleAppender.cs

إذا كنت تمديد هذه الفئة خارج المشروع.في مشروع خاص ، كرر المجلدات/مساحة بالمثل.

\specialproject\
\specialproject\Appender\
\specialproject\Appender\MemoryAppender.cs

في مشروع أعمل عليه الآن, واجهات ذات قاعدة الطبقات تذهب إلى الجمعيات التي هي منطقيا مقسمة بين الوظائف.تطبيقات مقدمي هذه والطبقات تذهب داخل الجمعية الأساسية.والفكرة هي أن الناس الذين يستخدمون واجهة برمجة التطبيقات يمكن الرجوع أكثر أو واحدة من API dlls بطريقة واضحة ومنطقية الطريقة.

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

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