1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| import java.util.ArrayList; import java.util.List;
class Employee { String name; String dept; int salary; List<Employee> subordinates;
public Employee(String name, String dept, int sal) { this.name = name; this.dept = dept; this.salary = sal; subordinates = new ArrayList<>(); }
public void add(Employee e) { subordinates.add(e); }
public List<Employee> getSubordinates() { return subordinates; }
public String toString() { return ("Employee :[ Name : " + name + ", dept : " + dept + ", salary :" + salary + " ]"); } }
public class CompositePatternDemo { public static void main(String[] args) { Employee CEO = new Employee("John", "CEO", 30000);
Employee headSales = new Employee("Robert", "Head Sales", 20000);
Employee headMarketing = new Employee("Michel", "Head Marketing", 20000);
Employee clerk1 = new Employee("Laura", "Marketing", 10000); Employee clerk2 = new Employee("Bob", "Marketing", 10000);
Employee salesExecutive1 = new Employee("Richard", "Sales", 10000); Employee salesExecutive2 = new Employee("Rob", "Sales", 10000);
CEO.add(headSales); CEO.add(headMarketing);
headSales.add(salesExecutive1); headSales.add(salesExecutive2);
headMarketing.add(clerk1); headMarketing.add(clerk2);
System.out.println(CEO); for (Employee headEmployee : CEO.getSubordinates()) { System.out.println(headEmployee); for (Employee employee : headEmployee.getSubordinates()) { System.out.println(employee); } } } }
|