上海网站seo招聘,建设工程施工许可证查询网站,淘宝客不做网站可以做么,wordpress重装主题组合模式 一、介绍二、人员管理系统使用案例 一、介绍
将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用都是相同的。
组合模式主要由以下几个部分构成#xff1a;
Component#xff08;组件#xff09;#xff1a;定义… 组合模式 一、介绍二、人员管理系统使用案例 一、介绍
将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用都是相同的。
组合模式主要由以下几个部分构成
Component组件定义了叶子节点和组合节点的公共接口可以包含一些默认的行为或属性。Leaf叶子节点表示树中的叶子结点对象叶子结点没有子节点。Composite组合节点表示树中的组合结点对象它可以拥有子节点并且实现了与 Component 相关的操作。
二、人员管理系统使用案例
需求人员管理系统要求能够管理公司中的员工和部门同时能够展示整个公司的组织架构。
组件Person接口表示人员
// 1. 定义接口
public interface Person {void displayDetails();
}叶子节点Employee类表示员工类实现了Person接口
// 2. 实现叶子节点
public class Employee implements Person {private String name;public Employee(String name) {this.name name;}Overridepublic void displayDetails() {System.out.println(Employee: name);}
}组合节点Department类表示部门类实现了Person接口。在Department类中包含一个列表用于存储人员Person对象。部门类中实现addPerson添加、removePerson删除员工和部门的功能并实现展示公司组织架构的displayDetails方法。
// 3. 创建组合节点
import java.util.ArrayList;
import java.util.List;public class Department implements Person {private String name;private ListPerson people;public Department(String name) {this.name name;this.people new ArrayList();}public void addPerson(Person person) {people.add(person);}public void removePerson(Person person) {people.remove(person);}Overridepublic void displayDetails() {System.out.println(Department: name);for (Person person : people) {person.displayDetails();}}
}创建各种类型的叶子节点和组合节点并进行组合成树形结构。然后调用顶层的展示方法来展示整个结构
// 4. 客户端代码
public class CompositePatternDemo {public static void main(String[] args) {// 创建叶子节点Employee emp1 new Employee(John);Employee emp2 new Employee(Alice);Employee emp3 new Employee(Bob);// 创建组合节点Department dept1 new Department(Engineering);dept1.addPerson(emp1);dept1.addPerson(emp2);Department dept2 new Department(Marketing);dept2.addPerson(emp3);// 将部门组合成公司Department company new Department(Our Company);company.addPerson(dept1);company.addPerson(dept2);// 展示整个公司结构company.displayDetails();}
}
组合模式通常用于表示具有层次结构的对象例如文件系统、组织结构等其中叶子节点和组合节点共享同一个接口。这种设计使得对待单个对象和组合对象的方式保持一致。