سؤال

لقد استخدمنا نمط MVP وWinforms بقدر لا بأس به من النجاح.ومع ذلك، هناك سؤال يبرز دائمًا حول MVP:

ما هو جيد التفاصيل لمقدمي العروض؟

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

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

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

لاحظ أنه في كلتا الحالتين، يمكن تحقيق عرض 1-مقدم-1.ما يعتبر تغييرات "عرض واحد".

ما الذي يعتبر عادة أفضل الممارسات لتفاصيل مقدم العرض باستخدام MVP وWinforms؟

  • مقدمو العروض الدقيقة و قابل للتخصيص السلوك من خلال خيارات أو شيء من هذا القبيل؟
  • مقدمو العروض الخشنون وقابلية إعادة استخدام مقدم العرض منخفضة؟
  • شيء آخر؟

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

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

المحلول

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

نصائح أخرى

في نظام CAD-CAM الخاص بي، لا يستخدم مقدمو العروض عناصر تحكم المستخدم.توجد عناصر تحكم المستخدم في العرض الموجود في مجموعة EXE التي تنفذ واجهات العرض التي يستخدمها مقدم العرض.

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

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

يبدو التسلسل الهرمي هكذا

عرض مجموعة أوامر تطبيق EXE مقدمي - يتم تنفيذ الأوامر من قبل المقدم الذي يعدل مجموعات مواد واجهات مقدم العرض النموذج

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

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

السؤال الأساسي الذي أطرحه عند استخدام MVP هو "ماذا يحدث إذا أردت استبدال النماذج بالكامل بشيء آخر؟".ستحدد الإجابات على هذا السؤال المكان الذي تعتمد فيه بشكل كبير على عنصر تحكم مستخدم معين أو محرك النموذج.

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

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