如何解决C#更改现有类-最佳实践开放/封闭原则
我正在尝试找出更改现有班级的最佳方法。 因此,该类称为ExcelReport,它具有一种方法Create(data,headings)。 这是实时的,并在许多地方使用。 现在,最近我想更改方法,以便可以在excel中格式化列。 创建(数据,标题,列格式)
为了不破坏现有程序,我能想到的最好的办法就是添加另一种方法 向该类创建2(数据,标题,列格式)。
o.k我收到了很多建议,说我应该使用重载方法来修改现有的类。 但这不会违反我现有的课程正在生产中的“打开/关闭原则”。我是否应该使用改进的新方法创建新的类ExcelReport2(和Interface),并使用依赖项注入将其传递到新程序中?
关于, 尼尔
解决方法
正如评论所建议的,最好的方法可能是使用重载方法。在大多数情况下,如果可能的话,我会采用将重载方法实现为传递的想法来解决这个问题。
Create(data,headings,columnformats)
将使用列格式转换数据并调用:
Create(data,headings)
方法末尾的。这意味着在所有Create方法的情况下,都使用2个参数调用版本,而需要3个的情况作为传递处理。这样可以保持最少的干扰,并在将来需要维护代码时避免混淆,因为您不会在以下内容中复制逻辑:
Create(data,headings)
编辑:使用此方法的一个重要注意事项是,如果columnformats
不修改数据或标题,则可能无法实际使用所概述的内容。在这种情况下,您将使用Create(data,columnformats)
作为基本方法,而Create(data,headings)
充当该函数的传递对象。在这种情况下,Create(data,headings)
将设置一个默认值,然后将其传递给Create(data,columnformats)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。