我认为MVP设计模式中的演示者应该精简并且没有像MVC中的控制器那样具有太多逻辑,并且大多数与模型更新有关的逻辑应该存在于应用服务中。
我的观点是,演示者应该只建立一个命令并将其发送给一个可以处理它的服务。
答案 0 :(得分:1)
这基本上是MVP的观点,是的。我将补充说,MVC通常被认为是Web应用程序的更好替代品,因为它们具有无状态性质。
答案 1 :(得分:1)
我会保持精益。您经常会发现,如果您使用业务逻辑加载演示者,您最终会复制代码。一旦您发现自己这样做,请将其向下移动到业务逻辑中。
我倾向于将业务操作保留在演示者之外的实体上作为经验法则。
e.g。
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);
}
我也不是将实体传递给视图的忠实粉丝,但这可能只是个人选择。