簡體   English   中英

MVPVM - 使用Interface或Presenter進行事件處理

[英]MVPVM - Event handling using Interface or Presenter

處理按鈕單擊,行雙擊和其他事件。 什么是更好的方法?

直接訪問演示者到視圖。 因此視圖可以直接在演示者上調用適當的方法,例如。 Presenter.Save()

要么

界面中的事件。

interface ILoginDetailView:
{
   event EventHandler Save;        
}

視圖

private void btnSave_Click(object sender, EventArgs e)
{
   Save(this, null)
}

主持人

view.Save += new EventHandler(view_Save);

我覺得第二種方法更好,因為它使視圖與演示者分離。 但是在描述模式的所有文章/論文中,使用了第一種方法。

就個人而言,我總是采用第二種方法。 一般來說,我不喜歡讓觀眾了解演示者,並且解耦是一個很大的優勢。 否則,我發現自己正在從視圖中獲取特定變量的函數。 事件模式很好地打破了。

我也會采用第二種方法,因為正如你所說,將視圖與演示者分離,這反過來使得這些東西可以測試。

在MVPVM(模型視圖演示者視圖模型)模式中,聲明視圖通常與視圖緊密耦合。 這允許您的視圖模型,視圖和業務/數據訪問層保持分離。

因此,演示者可以嚴格允許直接訪問視圖,而不會對視圖模型或視圖添加任何責任。

MVPVM設計模式

這是一篇很棒的文章,很好地討論了MVC,MVP,MVVM和MVPVM。

我認為第一種方法更清潔。

拯救只是感覺不像是一個事件 這是一個直接行動。

在MVVM中,您在viewmodel上調用一個命令,在MVC中,您在控制器上調用一個動作,在MVP中,您在調用者上調用一個方法。

保存保存是一個事件,但不是保存

但這可能是個人偏好的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM