江门那里做公司网站好,互联网服务网站建设目的,电商网站开发工具,怎么在word添加wordpress文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言
组合模式是将对象组合成树形结构来表现整体/部分层次结构#xff0c;可以更好的实现管理操作。 一、介绍
组合设计模式又叫部分整体模式#xff0c;将… 文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言
组合模式是将对象组合成树形结构来表现整体/部分层次结构可以更好的实现管理操作。 一、介绍
组合设计模式又叫部分整体模式将对象组合成树形结构来表现整体/部分层次结构可以更好的实现管理操作。使用户可以通过一致的方法操作单个对象或组合对象整体和部分的基本操作多数都是一样的也会有不同的地方。组合模式可以用一棵树来表示。
二、详细分析
1.核心组成
组合部件Component它是一个抽象接口表示树根合成部件Composite和组合部件类似也有自己的子节点叶子Leaf在组合中表示子节点对象注意他是没有子节点。 公司底下有部门部门底下有职位。以下所示
2.实现步骤
创建组合部件他是个抽象类定义部件中的属性和方法创建合成部件继承组合部件创建集合属性用来管理叶子节点创建叶子节点继承组合部件不能添加子节点。
3.代码示例
组合部件
/*** 组合部件*/
public abstract class Company {private String job;public Company(String job) {this.job job;}public String getJob() {return job;}public void setJob(String job) {this.job job;}/*** 添加职位*/protected abstract void addJob(Company company);/*** 删除职位*/protected abstract void removeJob(Company company);/*** 展示职位* param depth 显示层级*/protected abstract void display(int depth);}合成部件
/*** 合成部件*/
public class Department extends Company {ListCompany companyList new ArrayListCompany();public Department(String job) {super(job);}Overrideprotected void addJob(Company company) {companyList.add(company);}Overrideprotected void removeJob(Company company) {companyList.remove(company);}Overrideprotected void display(int depth) {StringBuffer str new StringBuffer();for (int i0;idepth;i){str.append(-);}// 输出System.out.println(str.toString()this.getJob());//子层级再加2for (Company company:companyList){company.display(depth2);}}}叶子节点
/*** 叶子节点*/
public class Job extends Company{public Job(String job) {super(job);}Overrideprotected void addJob(Company company) {}Overrideprotected void removeJob(Company company) {}Overrideprotected void display(int depth) {StringBuffer str new StringBuffer();for (int i0;idepth;i){str.append(-);}// 输出System.out.println(str.toString()this.getJob());}
}测试类 public static void main(String[] args) {// 创建根Company company new Department(北京公司);// 创建部门节点Company dept new Department(软件开发部门);Company dept2 new Department(软件测试部门);Company dept3 new Department(产品部门);// 创建叶子节点并添加至部门Company job new Job(软件开发经理);Company job1 new Job(软件开发工程师);dept.addJob(job);dept.addJob(job1);Company job2 new Job(软件测试工程师);dept2.addJob(job2);Company job3 new Job(产品经理);dept3.addJob(job3);company.addJob(dept);company.addJob(dept2);company.addJob(dept3);company.display(0);}结果
4.优缺点
优点
组合模式定义了一组统一的接口可以用来处理单个对象和组合对象从而简化了客户端代码组合模式使得可以很自然地将对象和它们的行为组织在一起提高了代码的内聚性新增加的叶节点类型或树枝节点类型可以无缝集成到现有系统中无需修改现有代码组合模式使得对象的添加和删除变得容易因为它们可以统一地被添加到树形结构中。
缺点
客户端需要花更更多时间理理清类之间的层次关系组合模式要求所有叶子节点和树枝节点都实现相同的接口这可能限制了对象的灵活性。
5.使用场景
当想表达对象的部分-整体的层次结构比如公司结构、菜单、文件夹等等当我们的要处理的对象可以生成一颗树形结构我们要对树上的节点和叶子进行操作时它能够提供一致的方式而不用考虑它是节点还是叶子。 总结
以上就是本篇的内容本文简单介绍了组合模式的组成、优缺点、使用场景等提供了代码示例。