2

根据Open/Closed原则

. . . 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭

那么我可以说Category严重违反了这个原则吗?

4

2 回答 2

3

我认为“关闭修改”的标准解释是指“添加新功能不需要修改现有代码”。使用这种解释,类别不会违反开放/封闭原则,因为编写新的类别方法并不构成修改现有代码。

至于类别方法可以替换类上现有方法的特殊情况,它可能不违反开放/封闭原则,但由于危险而令人不悦。这是该语言的“可以做到这一点,但不能做到”的特性之一。

于 2011-04-22T03:00:52.557 回答
3

我不明白怎么做。类别允许您添加依赖于现有界面的功能。它们不允许您对原始类进行任何真正的更改,它们只是提供一些语法糖,让您产生新方法已添加到类中的错觉。

换句话说,类别可以帮助您扩展一个类。他们不修改它。似乎它们强化了开放/封闭原则。

于 2011-04-21T15:26:08.203 回答