股东会下面是董事会和监事,董事会下面是总经理,总经理下面是多个副总经理,副总经理下方对应不同的部门,用java代码描述这样的组合模式
时间: 2023-06-01 14:03:07 浏览: 49
public interface Component {
void operation();
}
public class ShareholderMeeting implements Component {
private List<Component> components = new ArrayList<>();
public void add(Component component) {
components.add(component);
}
public void remove(Component component) {
components.remove(component);
}
public void operation() {
System.out.println("股东会");
for (Component component : components) {
component.operation();
}
}
}
public class BoardOfDirectors implements Component {
private List<Component> components = new ArrayList<>();
public void add(Component component) {
components.add(component);
}
public void remove(Component component) {
components.remove(component);
}
public void operation() {
System.out.println("董事会");
for (Component component : components) {
component.operation();
}
}
}
public class Supervisor implements Component {
public void operation() {
System.out.println("监事");
}
}
public class GeneralManager implements Component {
private List<Component> components = new ArrayList<>();
public void add(Component component) {
components.add(component);
}
public void remove(Component component) {
components.remove(component);
}
public void operation() {
System.out.println("总经理");
for (Component component : components) {
component.operation();
}
}
}
public class ViceGeneralManager implements Component {
private List<Component> components = new ArrayList<>();
public void add(Component component) {
components.add(component);
}
public void remove(Component component) {
components.remove(component);
}
public void operation() {
System.out.println("副总经理");
for (Component component : components) {
component.operation();
}
}
}
public class Department implements Component {
private String name;
public Department(String name) {
this.name = name;
}
public void operation() {
System.out.println(name + "部门");
}
}
// 示例代码
ShareholderMeeting shareholderMeeting = new ShareholderMeeting();
BoardOfDirectors boardOfDirectors = new BoardOfDirectors();
Supervisor supervisor = new Supervisor();
GeneralManager generalManager = new GeneralManager();
ViceGeneralManager viceGeneralManager1 = new ViceGeneralManager();
ViceGeneralManager viceGeneralManager2 = new ViceGeneralManager();
Department department1 = new Department("财务");
Department department2 = new Department("人力资源");
Department department3 = new Department("市场营销");
shareholderMeeting.add(boardOfDirectors);
boardOfDirectors.add(supervisor);
boardOfDirectors.add(generalManager);
generalManager.add(viceGeneralManager1);
generalManager.add(viceGeneralManager2);
viceGeneralManager1.add(department1);
viceGeneralManager1.add(department2);
viceGeneralManager2.add(department3);
shareholderMeeting.operation(); // 输出:股东会、董事会、监事、总经理、副总经理、财务部门、人力资源部门、市场营销部门
阅读全文