ما هي طريقة جيدة لتنفيذ الأحداث في المنظر السلبي؟

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

  •  18-09-2019
  •  | 
  •  

سؤال

أنا أتعلم نمط العرض السلبي للحفاظ على تطبيقي C # WinForms أسهل في الاختبار والصيانة.

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

وجهة نظري تبدو وكأنها هذه:

public interface IApplicationView
{
    event EventHandler Find;
}

يبدو أن مقدمي يشبه هذا:

public class ApplicationPresenter
{
    private IApplicationView _view;
    private IApplicationDomain _domain;

    public ApplicationPresenter(IApplicationView view) : this(view, new ApplicationDomain()) {}
    public ApplicationPresenter(IApplicationView view, IApplicationDomain domain) {
        _view = view;
        _domain = domain;

        HookupEventHandlersTo(view);
    }

    private void HookupEventHandlersTo(IApplicationView view)
    {
        view.Find += delegate { FindAction(); };
    }

    public void FindAction()
    {
        // ...
    }
}

بلدي Winform يبدو:

public partial class Form1 : Form, IApplicationView
{
    private ApplicationPresenter _presenter;
    public event EventHandler Find = delegate {};

    public Form1()
    {
        InitializeComponent();
        _presenter = new ApplicationPresenter(this);
        HookupEvents();
    }

    private void HookupEvents()
    {
        searchButton.Click += Find;
    }
}

شكرا!

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

المحلول

مورد كبير آخر لتعلم MVP مع WinForms هو جيريمي ميلرز بناء الكابينة الخاصة بك مسلسل. لقد وجدت أن هذا مفيد بشكل لا يصدق عندما كنت أتعلم،

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

نصائح أخرى

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

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