这里写一个例子:

在某家公司里的员工分为经理,工作者和销售者

使用继承的方式

设计模式中组合大于继承原则带来的好处

代码参考:https://gitee.com/constfafa/designpattern_demo.git下的designpattern_demo/src/main/java/com/hfi/compositereuse/extend

使用组合的方式

设计模式中组合大于继承原则带来的好处

代码参考:

https://gitee.com/constfafa/designpattern_demo.git

下的designpattern_demo/src/main/java/com/hfi/compositereuse/composite

 

可以看到组合优于继承的两点:

1. 组合不破坏Worker Account Sales的封装性

2. 支持扩展 扩展Employee类 比如增加组合类 不会对Worker Account Sales造成影响

如增加一个IManageRole 管理序列 说明Employee有一个管理序列的Role 还有一个业务序列的Role 就很灵活

设计模式中组合大于继承原则带来的好处

参考:设计模式之七大基本原则

相关文章: