这里写一个例子:
在某家公司里的员工分为经理,工作者和销售者
使用继承的方式
代码参考: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 就很灵活
参考:设计模式之七大基本原则