一、学校院系展示需求
编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如图
二、传统方案解决学校院系展示
传统方案解决学校院系展示存在的问题分析
- 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的
- 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的管理的操作,比如对学院、系的添加,删除,遍历等
- 解决方案:把学校、院、系都看做是组织结构,他们之间没有继承的关系,而是一个树形结构,可以更好的实现管理操作。 => 组合模式
三、组合模式基本介绍
- 组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示 “整体-部分” 的层次关系
- 组合模式依据树形结构来组合对象,用来表示部分以及整体层次
- 这种类型的设计模式属于结构型模式
- 组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象
四、组合模式原理类图
组合模式原理分析(组合模式的角色及职责)
- Component:这是组合中的一个对象声明接口,在适当的情况下,实现所有类共有的接口默认行为,用于访问和管理 Component 子部件,可以是抽象类或者接口
- Leaf:在组合模式中表示叶子节点
- Composite:非叶子节点,用于存储子部件,在 Component 接口中实现子部件的相关操作,比如增加、删除等操作
五、组合模式解决的问题
组合模式解决这样的问题,当我们要处理的对象可生成一个树形结构而我们要对树上的节点进行操作时,他能够提供一致的方式,而不用考虑其他节点
六、使用组合模式解决院校展示问题
6.1、类图
6.2、代码
OrganizationComponent
未完待续。。