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中,Presenter是唯一一个真正"思考"的类。
视图只是一种与用户交互的方式;向用户显示信息,并供用户输入信息。
模型获取信息并将其传递到需要的地方,或者更确切地说,呈现者告诉它获取信息并传递信息。模型所做的就是存储数据。
从我可以看到它看起来像你的视图试图成为你的模型,所有你的视图应该真正做的是有一个btnSave_Click(..)
方法,然后调用演示者运行一个适当的方法来存储/显示支付信息,然后告诉模型从视图/设置到视图。
总结一下;
- Model和View是根本不需要思考的基本类。
- 模型只保存获取/设置的信息。
- View只是为用户显示信息。
- 演示者是操作的大脑。它告诉谁;该做什么;当。