2010-01-29 58 views
2

我認爲MVP設計模式中的演示者應該是精簡的,並且沒有太多邏輯,就像MVC中的控制器一樣,我錯了,而且大多數邏輯必須處理模型更新住在應用服務中。Webforms MVP:什麼是演示者責任

我認爲演示者應該建立一個命令並將它發送給一個可以處理它的服務。

回答

1

這基本上是MVP的重點,是的。我會補充說,由於MVC的無狀態性,它通常被認爲是Web應用程序的更好選擇。

+0

儘管您可以在演示者中做任何想做的事情,但將整個應用程序層移到演示者中將會是一種反模式。 – hackerhasid 2010-01-29 17:00:32

1

我會保持它精益。您經常會發現,如果您使用業務邏輯加載演示者,則最終會複製代碼。只要你發現自己在做這件事,就把它從一層轉移到業務邏輯中。

作爲一個經驗法則,我傾向於保持演示者之外的實體的業務操作。

例如

void view_Credit(object sender, EventArgs e) 
{ 
    this.accountService.Credit(this.view.AccountId, this.view.AmountOfCredit); 
} 

而不是:

void view_Save(object sender, EventArgs e) 
{ 
    Account a = this.accountService.GetByAccountId(this.view.AccountId); 
    a.Balance += this.view.AmountOfCredit; 
    a.DateUpdated = DateTime.Now; 
    // lots of other business logic before you can save... 
    this.accountService.Save(a); 
} 

我也沒有經過實體通過對視的忠實粉絲,但也有可能僅僅是個人的選擇。

+0

我不認爲這只是個人選擇,使用ViewModel,您可以更改您的域的形狀,而無需更改用戶界面。 – epitka 2010-02-05 13:09:19