组合模式 模式引入 问题描述 假设我们要给一家公司做一个 OA 系统,公司总部在北京,全国几个大城市都有子公司,其他一些省会城市是办事处,有些城市还设置了大区。总部有职能部门,各个子公司也有自己的职能部门。这是一个明显的树状结构,最简单的想法是针对不同类型(如公司或部门)组织创建不同的对象,组织之间的交互在其内部实现。但是这样有不少问题,比如无法体现公司的组织结构,交互的实现复杂混乱,新增类型时工作量巨大等等。而且对用户来说,这不同类型其实是类似的——都是组织。 模式定义 像刚刚这种具有层级结构,且组成对象具有一致性的情况,就适合使用组合模式。 组合模式(Composite)是将对象组合成树形结构以表示 “部分-整体” 的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。