法则1:优先使用(对象)组合,而非(类)继承
法则2:针对接口编程,而非(接口的)实现
法则3:开放-封闭法则(OCP)
法则4:Liskov替换法则(LSP)
Liskov替换法则(LSP)清楚地表明了ISA关系全部都是与行为有关的。
为了保持LSP(并与开放-封闭法则一起),所有子类必须符合使用基类的client所期望的行为。
一个子类型不得具有比基类型(base type)更多的限制,可能这对于基类型来说是合法的,但是可能会因为违背子类型的其中一个额外限制,从而违背了LSP!
LSP保证一个子类总是能够被用在其基类可以出现的地方!