CRP: 如果使用继承,会导致父类的的任何变换都可能影响到子类的行为。如果使用对象组合,就降低了这种依赖关系。对于继承和组合,优先使用组合
如下图所示,中间的猫咪只需要继承黄猫的睡觉方法,若此时采用继承,则可能导致继承到黄毛的父类恐龙的所有方法,增加了代码复杂度。本身只需要添加一个睡觉的方法,却继承了其所有父类的方法。
一般不建议用继承去添加新的类或者添加新的方法。合成复用原则降低了模块与模块间的依赖关系,能用组合和继承都实现的方法,优先使用组合。
执行结果如下:
CRP: 如果使用继承,会导致父类的的任何变换都可能影响到子类的行为。如果使用对象组合,就降低了这种依赖关系。对于继承和组合,优先使用组合
如下图所示,中间的猫咪只需要继承黄猫的睡觉方法,若此时采用继承,则可能导致继承到黄毛的父类恐龙的所有方法,增加了代码复杂度。本身只需要添加一个睡觉的方法,却继承了其所有父类的方法。
一般不建议用继承去添加新的类或者添加新的方法。合成复用原则降低了模块与模块间的依赖关系,能用组合和继承都实现的方法,优先使用组合。
执行结果如下: