MVP - 谁创造了新模特?

时间:2014-03-16 21:20:44

标签: c# asp.net design-patterns mvp

我试图将MVP应用到我当前的项目中(Webforms),这让我感到困惑。

让我们说我有一个页面,我希望用户输入他的付款信息,然后将其发送到我的应用程序中的付款处理逻辑。

所以,让我们说支付信息看起来像这样:

public class PaymentInformation
{
    public BillingInformation BillingInformation { get; set; }
    public CreditCard CreditCard { get; set; }
}

public class BillingInformation
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
}

public class CreditCard
{
    public string CardNumber { get; set; }
    public string CVV { get; set; }
    public int ExpirationMonth { get; set; }
    public int ExpirationYear { get; set; }
}

View应该做这样的事吗?

public interface IPaymentView
{
    string FirstName { get; }
    string LastName { get; }
    string Address { get; }
    string City { get; }
    string CardNumber { get; }
    string CVV { get; }
    int ExpirationMonth { get; }
    int ExpirationYear { get; }
}

然后让Presenter获取所有这些属性并创建实际的PaymentInformation实例?

或者View应该这样做吗?

public interface IPaymentView
{
    PaymentInformation PaymentInformation { get; }
}

在这种情况下,View会从自己的控件中获取信息并创建支付信息的实际实例,以便Presenter可以使用它?

我真的很困惑主持人应该如何获得"复杂"来自View的数据。

1 个答案:

答案 0 :(得分:0)

我看到它的方式,在MVP中,Presenter是唯一能够做任何真实“思考”的课程。

视图只是与用户交互的一种方式;向用户显示信息,并为用户输入信息。

模型是获取信息并将其传递到需要的位置,或者更确切地说,演示者告诉它获取信息并传递信息。所有模型都存储数据。

从我所看到的看起来你的视图看起来像是你的模型,你的所有视图应该真的有一个btnSave_Click(..)方法,然后调用Presenter运行适当的方法来存储/显示付款信息,然后告诉模型从视图/设置到视图。

总结一下;

  1. 模型和视图是完全没有思考的基本类。
  2. 模型只保存获取/设置的信息。
  3. 视图仅显示用户的信息。
  4. 演示者是该操作的大脑。它告诉谁;该怎么办;何时。