原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处http://www.jasongj.com/design_pattern/composite/
组合模式介绍
组合模式定义
组合模式(Composite Pattern)将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户可以使用一致的方法操作单个对象和组合对象。
组合模式类图
组合模式类图如下
组合模式角色划分
- 抽象组件,如上图中的Component
- 简单组件,如上图中的SimpleComponent
- 复合组件,如上图中的CompositeComponent
组合模式实例
实例介绍
对于一家大型公司,每当公司高层有重要事项需要通知到总部每个部门以及分公司的各个部门时,并不希望逐一通知,而只希望通过总部各部门及分公司,再由分公司通知其所有部门。这样,对于总公司而言,不需要关心通知的是总部的部门还是分公司。
实例类图
组合模式实例类图如下(点击可查看大图)
实例解析
本例代码可从作者Github下载
抽象组件
抽象组件定义了组件的通知接口,并实现了增删子组件及获取所有子组件的方法。同时重写了hashCode
和equales
方法(至于原因,请读者自行思考。如有疑问,请在评论区留言)。
package com.jasongj.organization;
import java.util.ArrayList;
import java.util.Li