首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >频繁变化的开放-封闭原则的实现

频繁变化的开放-封闭原则的实现
EN

Stack Overflow用户
提问于 2020-04-18 07:36:29
回答 1查看 78关注 0票数 0

我有一个要求,系统发送电子邮件。目前,该系统通过电子邮件发送用户的名字,在生产和工作中很好。

现在我的客户要求在电子邮件中添加姓氏,所以我扩展了发送(用户用户信息)方法,这也很好。

现在客户端再次要求在电子邮件中添加电子邮件,随后客户再次要求在电子邮件中添加移动等更多的用户信息。

当客户经常要求更改相同的功能时,如何用开放-封闭的坚实原则来管理?Code

代码语言:javascript
复制
` 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 
        }
    }
`
EN

回答 1

Stack Overflow用户

发布于 2020-04-18 09:41:46

内容创建不必由发送方法负责。它可以像发送传递给它的任何内容一样。因此,您可以使用IEMailContent接口,而不是电子邮件接口。此接口的实现应处理邮件内容的准备工作。这可以在内容需求更改时进行扩展。可以延期。

电子邮件的发送方法应以IEMailContent为论据。然后,当内容需求发生变化时,它将不需要更改。关闭以便修改。

send方法可以有其他参数,如subject、to mail id list、cc mail id list、bcc id list以及默认值。如果这些参数中有任何需求更改,则不需要修改电子邮件类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61285705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档