Categories
Algorithms & Design Design Pattern

Composite Pattern

Employee.java

import java.util.ArrayList;

public class Employee {

	private String firstName, lastName;
	private String department;
	private ArrayList subordinates;
	
	public Employee(String firstName, String lastName, String department) {
		// TODO Auto-generated constructor stub
		this.firstName=firstName;
		this.lastName=lastName;
		this.department=department;
		subordinates = new ArrayList();
	}

	public void addSubordinateEmployee(Employee emp){
		this.subordinates.add(emp);
	}
	
	public ArrayList getSubordinates(){
		ArrayList subordinatesList = new ArrayList();
		subordinatesList.addAll(this.subordinates);
		for(Employee  emp: this.subordinates){
			subordinatesList.addAll(emp.getSubordinates());
		}
		return subordinatesList;
	}
	
	public String toString(){
		return firstName+", "+lastName+", "+department;
	}
}

CompositePatternDemo.java

import java.util.ArrayList;

public class CompositePatternDemo {

	public CompositePatternDemo() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		Employee ManagingDirector = new Employee("Jane", "Dsouza","Management");
		Employee CEO = new Employee("Hana", "Fujita", "Management");
		
		Employee PM1  = new Employee("Sara", "Mehta", "Management");
		Employee Lead1 = new Employee("Saran","Kumar", "Technical");
		Employee Developer1 = new Employee("Raja", "Moni", "Technical");
		
		Employee PM2  = new Employee("Hara", "Mehta", "Management");
		Employee Lead2 = new Employee("Karan","Kumar", "Technical");
		Employee Developer2 = new Employee("Kajol", "Soni", "Technical");
		
		
		ManagingDirector.addSubordinateEmployee(CEO);
		CEO.addSubordinateEmployee(PM1);
		CEO.addSubordinateEmployee(PM2);
		
		PM1.addSubordinateEmployee(Lead1);
		Lead1.addSubordinateEmployee(Developer1);
		
		PM2.addSubordinateEmployee(Lead2);
		Lead2.addSubordinateEmployee(Developer2);
		
		
		
		//print hierarachy of ManagingDirector
		ArrayList ManagindDirectorHierarchy = ManagingDirector.getSubordinates();
		System.out.println("ManagingDirectorHierarchy :"+ManagindDirectorHierarchy);
		
		//print hierarchy of PM2
		ArrayList PM2Hierarchy = PM2.getSubordinates();
		System.out.println("PM2Hierarchy :"+PM2Hierarchy);
		
	}

}

Output

Leave a comment

Design a site like this with WordPress.com
Get started