| 信号 | 子类覆写后抛不支持、继承的大部分能力闲置 |
|---|---|
| 手法 | Replace Superclass with Delegate、Push Down Method / Field |
| 替代 | 组合优先于继承 |
组合化方向
组合化方向
// 之前:class Stack extends Vector(继承暴露了多余 API)
// 之后:class Stack { private List<Object> elements; }子类只用到父类很少的能力(或抛异常拒绝继承的方法):优先用组合替换继承(Replace Superclass with Delegate),或把不适用的部分下推(Push Down Method / Field)。
| 信号 | 子类覆写后抛不支持、继承的大部分能力闲置 |
|---|---|
| 手法 | Replace Superclass with Delegate、Push Down Method / Field |
| 替代 | 组合优先于继承 |
// 之前:class Stack extends Vector(继承暴露了多余 API)
// 之后:class Stack { private List<Object> elements; }