SOLID原则如何应用于Objective-C中的方法覆盖?

时间:2016-01-12 18:59:11

标签: objective-c oop solid-principles

我读了“SOLID”原则的解释。以下是'L'部分的解释:

  

程序中的对象应该可以替换为它们的实例   子类型而不改变该程序的正确性

例如,我有MYViewController : UIViewController

当我覆盖viewDidLoad时,这意味着我更改了基本视图控制器的逻辑。对?这是否意味着我改变该程序的正确性

或者我误解了这一点?

1 个答案:

答案 0 :(得分:4)

您覆盖viewDidLoad这一事实并不构成违反Liskov替换原则(LSP)。 (子类的功能通常是扩展超类的行为。)实际上反过来说,如果你在子类中实现行为使得它不能再用于引用基类的情况。

但LSP并不是我们正在考虑完全不同的类(例如冰淇淋对象; lol)的情况。我们通常关注的是我们处理实际子类的位置,但是不能再替换对其基类的引用。

当覆盖方法时,如果代码适当地调用super实现,它通常满足LSP。关于viewDidLoad的问题,您总是希望在这种情况下致电super