定义:也称为整体-部分模式,它的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示。
适用场景:
1、希望客户端可以忽略组合对象与单个对象的差异时
2、对象层次具备整体和部分,呈树形结构(如树形菜单,操作系统目录结构,公司组织结构等)
优点:
1、清楚地定义分层次的复杂对象,表示对象的全部或部分层次
2、让客户端忽略了层次的差异,方便对整个层次结构进行控制
3、简化客户端代码
4、符合开闭原则
缺点:
1、限制类型时会较为复杂
2、使设计变得更加抽象
生活场景中的应用:
1、公司组织架构
2、操作系统的文件管理
源码应用:
1)spring中的HandlerMethodArgumentResolverComposite、ViewResolverComposite、HandlerMethodReturnValueHandlerComposite
2)mybatis中的sqlnode