标签:rip ase nts lfs name override set util ilo
这次来看下组合模式,先看下frist的定义:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
那在来看下类图吧:

来看下具体代码吧:
package com.shenqi.mode;
import java.util.List;
/**
* @Author:shenqi
* @Description:
* @Date:2019/7/13 18:46
*/
public abstract class Department {
public String name;
public int headcount;
public List<Department> departments;
public abstract void addDepartment(Department department);
public abstract void removeDepartment(Department department);
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHeadcount() {
return headcount;
}
public void setHeadcount(int headcount) {
this.headcount = headcount;
}
public List<Department> getDepartments() {
return departments;
}
public void setDepartments(List<Department> departments) {
this.departments = departments;
}
public void print() {
System.out.println("部门名称:" + name + ",人数:" + headcount);
}
}
package com.shenqi.mode;
import java.util.ArrayList;
import java.util.List;
/**
* @Author:shenqi
* @Description:
* @Date:2019/7/13 18:48
*/
public class ApplicationPlatformDepartment extends Department {
public ApplicationPlatformDepartment(String name, int headcount) {
this.name = name;
this.headcount = headcount;
departments = new ArrayList<>();
}
@Override
public void addDepartment(Department department) {
departments.add(department);
}
@Override
public void removeDepartment(Department department) {
departments.remove(department);
}
}
package com.shenqi.mode;
import java.util.ArrayList;
/**
* @Author:shenqi
* @Description:
* @Date:2019/7/13 18:50
*/
public class TechnologyPlatformDepartment extends Department {
public TechnologyPlatformDepartment(String name, int headcount) {
this.name = name;
this.headcount = headcount;
departments = new ArrayList<>();
}
@Override
public void addDepartment(Department department) {
departments.add(department);
}
@Override
public void removeDepartment(Department department) {
departments.remove(department);
}
}
package com.shenqi.mode;
import java.util.ArrayList;
/**
* @Author:shenqi
* @Description:
* @Date:2019/7/13 18:52
*/
public class OrderGroup extends Department {
public OrderGroup(String name, int headcount) {
this.name = name;
this.headcount = headcount;
departments = new ArrayList<>();
}
@Override
public void addDepartment(Department department) {
}
@Override
public void removeDepartment(Department department) {
}
}
package com.shenqi.mode;
import java.util.ArrayList;
/**
* @Author:shenqi
* @Description:
* @Date:2019/7/13 18:57
*/
public class ITCenter extends Department {
public ITCenter(String name, int headcount) {
this.name = name;
this.headcount = headcount;
departments = new ArrayList<>();
}
@Override
public void addDepartment(Department department) {
departments.add(department);
}
@Override
public void removeDepartment(Department department) {
departments.remove(department);
}
}
package com.shenqi.mode;
import java.util.List;
/**
* @Author:shenqi
* @Description:
* @Date:2019/7/13 18:55
*/
public class DepartmentMain {
public static void main(String[] args) {
Department itCenter = new ITCenter("科技与信息中心",1000);
Department applicationPlatformDepartment = new ApplicationPlatformDepartment("应用平台部", 55);
Department technologyPlatformDepartment = new TechnologyPlatformDepartment("技术平台部", 20);
Department orderGroup = new OrderGroup("订单平台组", 10);
itCenter.addDepartment(applicationPlatformDepartment);
itCenter.addDepartment(technologyPlatformDepartment);
applicationPlatformDepartment.addDepartment(orderGroup);
List<Department> departments = itCenter.getDepartments();
for(Department department : departments) {
department.print();
for(Department dd : department.getDepartments()) {
dd.print();
}
}
}
}
标签:rip ase nts lfs name override set util ilo
原文地址:https://www.cnblogs.com/shenqiaqia/p/11181751.html