我有一个要求,系统发送电子邮件。目前,该系统通过电子邮件发送用户的名字,在生产和工作中很好。
现在我的客户要求在电子邮件中添加姓氏,所以我扩展了发送(用户用户信息)方法,这也很好。
现在客户端再次要求在电子邮件中添加电子邮件,随后客户再次要求在电子邮件中添加移动等更多的用户信息。
当客户经常要求更改相同的功能时,如何用开放-封闭的坚实原则来管理?Code
` class User
{
public int userId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Mobile { get; set; }
}
interface Email
{
void send(User userInfo);
}
class UserEmail : Email
{
public void send(User userInfo)
{
// Sends users firstname
//Email Send code
}
}
class NewUserEmail : Email
{
public void send(User userInfo)
{
// Sends users Lirstname + Lastname
//Email Send code
}
}
`发布于 2020-04-18 09:41:46
内容创建不必由发送方法负责。它可以像发送传递给它的任何内容一样。因此,您可以使用IEMailContent接口,而不是电子邮件接口。此接口的实现应处理邮件内容的准备工作。这可以在内容需求更改时进行扩展。可以延期。
电子邮件的发送方法应以IEMailContent为论据。然后,当内容需求发生变化时,它将不需要更改。关闭以便修改。
send方法可以有其他参数,如subject、to mail id list、cc mail id list、bcc id list以及默认值。如果这些参数中有任何需求更改,则不需要修改电子邮件类。
https://stackoverflow.com/questions/61285705
复制相似问题