【发布时间】:2020-07-31 18:51:43
【问题描述】:
我有一个系统发送电子邮件的要求。目前系统通过电子邮件发送用户的名字,并且它正在生产中并且工作正常。
现在我的客户要求在电子邮件中添加姓氏,所以我扩展了 send(User userinfo) 方法,这也可以正常工作。
现在客户再次要求在电子邮件中添加电子邮件,稍后客户再次要求在电子邮件中添加手机等更多用户信息。
当客户频繁要求对同一功能进行更改时,如何使用可靠原则的开闭原则来管理这个问题? 代码
` 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
}
}
`
【问题讨论】:
-
当客户要求更改电子邮件功能时,旧功能应该可以工作还是旧功能已过时?
-
发送电子邮件是主要要求,邮件模板和占位符内的动态内容是一个单独的问题。检查您的设计。如果您有“获取模板/填写模板(字典)/发送邮件”之类的设计,您只需更改配置,或者客户只需从后台添加姓氏
-
@ChetanRanpariya 客户想要废弃该功能。
-
@All,这是一道面试题。
标签: c# solid-principles open-closed-principle