JAVA设计模式之组合模式原理与用法详解 组合模式是JAVA设计模式的一种,主要用于处理树形结构的数据。它将不同但是相关的对象组合成树形结构,以实现“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 组合模式的原理: 组合模式的核心是将不同的对象组合成树形结构,以便实现对树形结构的操作。它通过定义一个Component接口,将所有的对象都实现这个接口,从而实现了对树形结构的统一管理。 组合模式的角色组成: 1. Component对象:是组合中的对象接口,是所有类共有的接口。是用于统一定义整体中的部分。 2. Leaf对象:整体中的部分,没有下一级。 3. Composite对象:用来存储子部件,在Component接口中实现与部分有关操作。 组合模式的优点: 1. 可以实现对树形结构的统一管理。 2. 可以实现对单个对象和组合对象的使用具有一致性。 3. 可以方便地添加或删除树形结构中的节点。 组合模式的应用场景: 1. 文件系统:可以使用组合模式来实现文件系统的树形结构。 2. 公司组织结构:可以使用组合模式来实现公司组织结构的树形结构。 3. 图形用户界面:可以使用组合模式来实现图形用户界面的树形结构。 JAVA组合模式的用法: 在JAVA中,可以使用组合模式来实现树形结构的管理。例如,可以使用抽象类Firm来定义公司的结构,然后使用BranchFirm类来实现分公司的结构,使用MarketDepartment类来实现公司市场部的结构。 public abstract class Firm { private String firmName;// 公司名称 public Firm(String firmName) { this.firmName = firmName; } public String getFirmName() { return firmName; } public void setFirmName(String name) { this.firmName = name; } protected abstract void append(Firm firm);// 添加公司,如新增分公司 protected abstract void romove(Firm firm);// 删除公司:如因故关闭分公司 protected abstract void show(int level);//显示公司所在的层级:总公司,分公司,办事处等 } public class BranchFirm extends Firm { private List<Firm> cList; public BranchFirm(String name) { super(name); cList = new ArrayList<Firm>(); } @Override protected void append(Firm firm) { cList.add(firm); } @Override protected void show(int depth) { StringBuilder sb = new StringBuilder(""); for (int i = 0; i < depth; i++) { sb.append("*"); } System.out.println(new String(sb) + this.getFirmName()); for (Firm c : cList) { c.show(depth + 2); } } @Override protected void romove(Firm firm) { // TODO Auto-generated method stub cList.remove(firm); } } public class MarketDepartment extends Firm { public MarketDepartment(String name) { super(name); } @Override protected void append(Firm company) { } @Override protected void show(int depth) { // TODO Auto-generated method stub StringBuilder sb = new StringBuilder(""); for (int i = 0; i < depth; i++) { sb.append("*"); } System.out.println(new String(sb) + this.getFirmName()); } } 通过使用组合模式,可以方便地实现树形结构的管理和操作。
- 粉丝: 4
- 资源: 906
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助