组合模式
定义:
将对象组合成树型结构以表示“部分-整体”的层次结构
组合模式使客户端对单个对象和组合对象保持一致的方式处理
类型:结构型
适用场景:
希望客户端可以忽略组合对象与单个对象的差异时
处理一个树型结构时
优点
清楚地定义分层次的复杂对象,表示对象的全部或部分层次
让客户端忽略了层次的差异,方便对整个层次结构进行控制
简化客户端代码
符合开闭原则
缺点
限制类型时较为复杂
使设计变得更加抽象
相关设计模式
组合模式和访问者模式
coding
业务场景 :学校里面有很多课程,每个课程下面都有各自的子课程,我们要实现的业务就是对他们的操作都是一样的。
创建CatalogComponent抽象类
创建Course类继承CatalogComponent
重写三个方法
创建CourseCatalog类
重写四个方法
当前UML类图
创建Test类
打印结果
JDK源码中的应用:
Container类
通过看它的行为方法add()可以看出,它添加的是它的父类,符合组合模式的设计
HashMap类
add()方法中放入的是map,这也是组合模式的体现
ArrayList类
Mybatis中的应用:
MixedSqlNode类