MVP -谁创造新的模式

本文关键字:模式 创造 MVP | 更新日期: 2023-09-27 17:50:42

我正试图将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; }
}

视图应该这样做吗?

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; }
}

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

或者视图应该这样做吗?

public interface IPaymentView
{
    PaymentInformation PaymentInformation { get; }
}

在这种情况下,视图将从自己的控件中获取信息并创建支付信息的实际实例,以便演示者可以使用它?

我真的很困惑,演示者应该如何从视图中获得"复杂"的数据。

MVP -谁创造新的模式

在我看来,在MVP中,Presenter是唯一一个真正"思考"的类。

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

模型获取信息并将其传递到需要的地方,或者更确切地说,呈现者告诉它获取信息并传递信息。模型所做的就是存储数据。

从我可以看到它看起来像你的视图试图成为你的模型,所有你的视图应该真正做的是有一个btnSave_Click(..)方法,然后调用演示者运行一个适当的方法来存储/显示支付信息,然后告诉模型从视图/设置到视图。

总结一下;

    Model和View是根本不需要思考的基本类。
  1. 模型只保存获取/设置的信息。
  2. View只是为用户显示信息。
  3. 演示者是操作的大脑。它告诉谁;该做什么;当。