多用组合少用继承
2022-08-01 15:46:58 23 举报
AI智能生成
如何使用组合模式替代继承
作者其他创作
大纲/内容
继承存在的问题
继承爆炸
如何体现
鸟类<br>
会飞的鸟类、不会飞的鸟类
会叫会飞的鸟类,不会叫会飞的鸟类,会叫不会飞的鸟类,不会叫不会飞的鸟类
会下蛋的。。。。
组合模式
定义接口
会飞、会叫、会下单
实现类
鸟类实现相应的接口即可
如果实现类太多,一些接口都是默认实现,可以提供一个默认实现类,再采用委托的形式即可<br>
继承的使用场景
类之间的继承结构稳定(不会轻易改变),继承层次比较浅(比如,最多有两层继承关系),继承关系不复杂,
有些固定的模式,比如模板方法模式、基于继承的适配器模式
组合的使用场景
避免继承爆炸,可以采用组合
固定的模式
<span style="color: rgb(51, 51, 51); font-family: "PingFang SC", Avenir, Tahoma, Arial, "Lantinghei SC", "Microsoft Yahei", "Hiragino Sans GB", "Microsoft Sans Serif", "WenQuanYi Micro Hei", Helvetica, sans-serif; font-size: 16px;">装饰者模式(decorator pattern)</span><br>
策略模式(strategy pattern)<br>
组合模式(composite pattern)
有的时候,从业务含义上,A 类和 B 类并不一定具有继承关系。抽象出一个共同的父类也不行,这种情况下也可以采用组合<br>
0 条评论
下一页