سؤال

لنفترض أن لديك Triads MVP متعددة في التطبيق الخاص بك (تطبيق WinForms .NET 2.0) وكل ثلاثية تعتني بمجال مسؤولية. ما هي طريقتك المفضلة لتنسيق التواصل بين Trids MVP؟

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

تقلق من أن هذا قد يكون فئة "الله".

الخيار 2 يحتوي مقدم العرض "على" مقدم آخر ، وعندما يحدث شيء يثير الاهتمام في النموذج ، يستخدم مقدم العرض مقدم العرض الآخر لتحريك الاتصالات.

تقلق من أن مقدمي العروض لا ينبغي أن يكون لديهم واجهة عامة (نهج مقدم العرض الأول) وهذا يكسر ذلك.

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

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

المحلول

لا أن تكون غامضة ... ولكن ذلك يعتمد. النهجين اللذين استخدمتهما في الماضي:

  1. استخدم مجمع الحدث نمط ، واطلب من المقدمين الفرديين إطلاق الأحداث التي يمكن للمقدمين الآخرين التعامل معها. على سبيل المثال لا يلي: events.Raise<MyEvent> () ويأخذ مقدم العرض: IHandler<MyEvent> ويتفاعل وفقًا لذلك public void Handle (MyEvent @event) طريقة.
  2. استخدم نموذجًا مشتركًا يتم حقنه في مقدمي العروض الذين يحتاجون إلى التنسيق. على سبيل المثال ، إذا كان أحد مقدمي العرض يتعامل مع اختيار FOO المعطى ، ويحتاج مقدم العرض الآخر إلى تحديث لوحة التفاصيل ذات تفاصيل FOO ، فقد أستخدم نموذج حالة IFOOSELECTION وحقن ذلك في كل من مقدمي العروض الذين يحتاجون إلى تنسيق مفهوم "الاختيار الحالي '.

الواجهة:

public interface IFooSelection {
    public event EventHandler Changed;
    Foo Selected { get; set; }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top