目标C类别与开放/封闭原则

时间:2011-04-21 15:21:34

标签: objective-c oop design-patterns open-closed-principle

符合打开/关闭原则

  

。 。 。软件实体(类,模块,函数等)应该是可以扩展的,但是关闭以进行修改

那么我可以说类别强烈违反这一原则吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

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

对于类别方法可以替换类中现有方法的特殊情况,它可能不违反开放/封闭原则,但它是不受欢迎的,因为它是危险的。这是其中一个“它可以做到这一点,但不要”该语言的功能。