组合模式主要是为了表达“部分-整体”的层次结构,例如公司的组织架构,每个部门下又有若干个下级部门,再如菜单结构,每个菜单下可能有一个或多个子菜单。
下例以员工的层级结构说明组合模式的用法。每个员工都有姓名、部门、工资等属性,每个员工可能有0个或多个下属员工。
Employee类的代码如下:
package composite;
import java.util.ArrayList;
import java.util.List;
public class Employee {
private String name;
private String department;
private int salary;
private List < Employee > subordinates;
//构造函数
public Employee(String name, String department, int salary) {
this.name=name;
this.department=department;
this.salary=salary;
this.subordinates=new ArrayList < Employee > ();
}
//添加下属
public void add(Employee employee) {
subordinates.add(employee);
}
//移除下属
public void remove(Employee employee) {
subordinates.remove(employee);
}
//获取下属
public List < Employee > getSubordinates(){
return subordinates;
}
//转成字符串
public String toString() {
return "员工(姓名:"+name+",部门:"+department+",工资:"+salary+")";
}
}
主函数调用方式:
package main;
import composite.*;
public class CompositePattern {
public static void main(String[] args) {
//创建一个员工:总裁
Employee president = new Employee("李刚","管理层",30000);
//创建两个员工:部门领导
Employee directorSales = new Employee("王孟","销售部",20000);
Employee directorRND = new Employee("严明","研发部",20000);
//创建两个员工:销售部销售员
Employee saler1 = new Employee("孟德贵","销售部",10000);
Employee saler2 = new Employee("肖亮高","销售部",10000);
//创建两个员工:研发部工程师
Employee engineer1 = new Employee("左弓成","研发部",10000);
Employee engineer2 = new Employee("成颜发","研发部",10000);
//总裁添加下属
president.add(directorSales);
president.add(directorRND);
//销售部部门领导添加下属
directorSales.add(saler1);
directorSales.add(saler2);
//研发部部门领导添加下属
directorRND.add(engineer1);
directorRND.add(engineer2);
//打印输出所有员工
System.out.println(president);
for(Employee directorEmployee: president.getSubordinates()) {
System.out.println(directorEmployee);
for(Employee employee: directorEmployee.getSubordinates()) {
System.out.println(employee);
}
}
}
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
JAVA
+关注
关注
20文章
2990浏览量
111353 -
JAVA语言
+关注
关注
0文章
138浏览量
20766
发布评论请先 登录
相关推荐
热点推荐
ADS52J90配置成了test pattern模式,ADC传输回来的pattern值出现错位现象,为什么?
调试ADS52J90这款芯片时,先将芯片配置成了test pattern模式,但是ADC传输回来的pattern值出现错位现象,抓取frame clk时发现在设定某些特定的pattern
发表于 01-03 07:21
dlpc3470 Splash Pattern模式为什么会设置最大Pattern周期,这个最大周期能否更改?
dlpc3470 Splash Pattern 模式为什么会设置最大 Pattern 周期,这个最大周期能否更改?
发表于 02-19 08:41
lightcrafter4500. Pattern sequence模式下,图像源(pattern source)中Video port怎么使用?
你好,我们在做三维测量,需要通过该模块投影结构光。但是lightcrafter4500 的闪存大小只有32MB,不能将所需的结构光图像完全存入。因此,在使用Pattern sequence模式
发表于 02-28 07:38
请问external pattern sequence子模式的正确使用方式是什么?
在做结构光成像的相关研究中,想投影大量正弦条纹图(比如60张)并配合相机实现外触发,根据查阅用户手册和编程手册,应该将lightcrafter设置为hdmi模式下的external pattern
发表于 02-28 08:38
嵌入式C语言软件设计之装饰器模式(Decorator Pattern)
装饰器模式(Decorator Pattern),是结构型设计模式的一种,装饰器模式允许向一个现有的对象添加新的功能,而又不改变其对象结构,这种方式比使用子类继承的方式更加灵活。
发表于 03-01 10:55
?611次阅读
评论