ما هي الممارسة الجيدة لتقسيم مقدمي العرض في نمط واجهة MVP الذي أصبح كبيرًا جدًا؟

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

  •  08-07-2019
  •  | 
  •  

سؤال

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

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

هل هناك أي تقنيات أو قواعد عامة أو مجالات مشتركة يمكنك إعادة تصميمها من مقدمي العرض لديك؟

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

المحلول

عادةً ما أستخدم طريقتين:

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

تحديث

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

public class ComplexForm: Form, ISubView, IOtherSubView
{
    ...
}

ثم قمت بتقسيم المقدم إلى عدد المشاهدات التي قمت بإنشائها.

public class SubViewPresenter
{
    private ISubView subView;
    ...
}

public class OtherSubViewPresenter
{
    private IOtherSubView otherSubView;
    ...
}

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

نصائح أخرى

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

وهذا الأمل هو مفيد.

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