赞
踩
作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397)
目录
组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。
组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含树枝节点和叶子节点,树形结构图如下。
由上图可以看出,其实根节点和树枝节点本质上属于同一种数据类型,可以作为容器使用;而叶子节点与树枝节点在语义上不属于用一种类型。但是在组合模式中,会把树枝节点和叶子节点看作属于同一种数据类型(用统一接口定义),让它们具备一致行为。
将对象组合成树形结构以表示"部分-整体"的层次结构。
组合模式包含以下主要角色。
具体实现类
- /**
- * 部门
- */
- public class Department {
- /**
- * 编号
- */
- private String no;
-
- /**
- * 名称
- */
- private String name;
-
- /**
- * 级别
- */
- private int level;
-
- /**
- * 下级部门
- */
- private List<Department> subDepartments;
-
- public Department(String no, String name) {
- this.no = no;
- this.name = name;
- this.subDepartments = new ArrayList<>();
- }
-
- /**
- * 添加下级部门
- */
- public void add(Department department) {
- department.level = level + 1;
- subDepartments.add(department);
- }
-
- /**
- * 删除下级部门
- */
- public void remove(Department department) {
- subDepartments.remove(department);
- }
-
- /**
- * 获取下级部门列表
- */
- public List<Department> getSubDepartments() {
- return subDepartments;
- }
-
- @Override
- public String toString() {
- return "Department{" +
- "no='" + no + '\'' +
- ", name='" + name + '\'' +
- ", level=" + level +
- ", subDepartments=" + subDepartments +
- '}';
- }
- }
具体使用
- public class App {
- public static void main(String[] args) {
- //公司
- Department company = new Department("000000", "xxx公司");
-
- //总裁办
- Department ceo = new Department("000001", "总裁办");
- company.add(ceo);
-
- //人力资源部
- Department hrCenter = new Department("000002", "人力资源部");
- ceo.add(hrCenter);
-
- //研发部
- Department rdCenter = new Department("000003", "研发部");
- ceo.add(rdCenter);
-
- //硬件研发部
- Department hardware = new Department("000004", "硬件研发部");
- rdCenter.add(hardware);
-
- //软件研发部
- Department software = new Department("000005", "软件研发部");
- rdCenter.add(software);
-
- System.out.println(company);
-
- }
- }
1、Android或者其他系统中的View、Window
2、文件系统
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。