本文介绍: 一个公司可以分总公司和分公司,无论是总公司还是分公司都有自己的部门,如人力资源管理部门、财务部门。分公司可以建立自己在不同地域的办事处。请使用组合模式打印出某个公司的结构。组合模式:将对象组合成树形结构。
案例:公司管理。一个公司可以分总公司和分公司,无论是总公司还是分公司都有自己的部门,如人力资源管理部门、财务部门。分公司可以建立自己在不同地域的办事处。请使用组合模式打印出某个公司的结构。
package Composite;
abstract class Company {
private String name;
public Company(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract void add(Company company);
public abstract void remove(Company company);
public abstract void display(int depth);
public abstract void lineOfDuty();
}
package Composite;
import java.util.ArrayList;
import java.util.List;
public class ConcreteCompanty extends Company{
private List<Company> children = new ArrayList<>();
public ConcreteCompanty(String name) {
super(name);
}
@Override
public void add(Company company) {
children.add(company);
}
@Override
public void remove(Company company) {
children.remove(company);
}
@Override
public void display(int depth) {
for(int i=0;i<depth;i++)
System.out.print("-");
System.out.println(this.getName());
for(Company company : children) {
company.display(depth + 2);
}
}
@Override
public void lineOfDuty() {
}
}
package Composite;
public class FinanceDepartment extends Company{
public FinanceDepartment(String name) {
super(name);
}
@Override
public void add(Company company) {
}
@Override
public void remove(Company company) {
}
@Override
public void display(int depth) {
for(int i=0;i<depth;i++)
System.out.print("-");
System.out.println(this.getName());
}
@Override
public void lineOfDuty() {
}
}
package Composite;
public class HRDepartment extends Company{
public HRDepartment(String name) {
super(name);
}
@Override
public void add(Company company) {
}
@Override
public void remove(Company company) {
}
@Override
public void display(int depth) {
for(int i=0;i<depth;i++)
System.out.print("-");
System.out.println(this.getName());
}
@Override
public void lineOfDuty() {
}
}
package Composite;
public class Client {
public static void main(String[] args) {
ConcreteCompanty root = new ConcreteCompanty("总公司");
root.add(new HRDepartment("总公司人力资源部"));
root.add(new FinanceDepartment("总公司财务部"));
ConcreteCompanty comp = new ConcreteCompanty("分公司1");
comp.add(new HRDepartment("分公司1人力资源部"));
comp.add(new FinanceDepartment("分公司1财务部"));
ConcreteCompanty comp1 = new ConcreteCompanty("分公司1办事处A");
comp1.add(new HRDepartment("分公司1办事处人力资源部"));
comp1.add(new FinanceDepartment("分公司1办事处财务部"));
ConcreteCompanty comp2 = new ConcreteCompanty("分公司1办事处B");
comp2.add(new HRDepartment("分公司1办事处B人力资源部"));
comp2.add(new FinanceDepartment("分公司1办事处B财务部"));
comp.add(comp1);
comp.add(comp2);
root.add(comp);
ConcreteCompanty compt = new ConcreteCompanty("分公司2");
compt.add(new HRDepartment("分公司2人力资源部"));
compt.add(new FinanceDepartment("分公司2财务部"));
root.add(compt);
root.display(1);
}
}
原文地址:https://blog.csdn.net/qq_63806300/article/details/134819499
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49026.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。