符合打开/关闭原则
。 。 。软件实体(类,模块,函数等)应该是可以扩展的,但是关闭以进行修改
那么我可以说类别强烈违反这一原则吗?
答案 0 :(得分:3)
我不知道怎么做。类别允许您添加依赖于现有界面的功能。它们不允许您对原始类进行任何真正的更改,它们只是提供一些语法糖,这会让您觉得新方法已添加到类中。
换句话说,类别可以帮助您扩展课程。他们不会修改它。似乎它们强化了开放/封闭原则。
答案 1 :(得分:3)
我认为“关闭修改”的标准解释意味着“添加新功能不需要修改现有代码”。使用该解释,类别不违反开放/封闭原则,因为编写新的类别方法并不构成修改现有代码。
对于类别方法可以替换类中现有方法的特殊情况,它可能不违反开放/封闭原则,但它是不受欢迎的,因为它是危险的。这是其中一个“它可以做到这一点,但不要”该语言的功能。