根据Open/Closed原则
. . . 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭
那么我可以说Category严重违反了这个原则吗?
根据Open/Closed原则
. . . 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭
那么我可以说Category严重违反了这个原则吗?
我认为“关闭修改”的标准解释是指“添加新功能不需要修改现有代码”。使用这种解释,类别不会违反开放/封闭原则,因为编写新的类别方法并不构成修改现有代码。
至于类别方法可以替换类上现有方法的特殊情况,它可能不违反开放/封闭原则,但由于危险而令人不悦。这是该语言的“可以做到这一点,但不能做到”的特性之一。
我不明白怎么做。类别允许您添加依赖于现有界面的功能。它们不允许您对原始类进行任何真正的更改,它们只是提供一些语法糖,让您产生新方法已添加到类中的错觉。
换句话说,类别可以帮助您扩展一个类。他们不修改它。似乎它们强化了开放/封闭原则。