Skip to content

Commit cd6c7c7

Browse files
committed
add Composite Pattern
1 parent 930a817 commit cd6c7c7

File tree

5 files changed

+163
-0
lines changed

5 files changed

+163
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Author Steven Yeoh
3+
* Copyright (c) 2019. All rights reserved.
4+
*/
5+
6+
package com.dsl.design.pattern.composite;
7+
8+
import java.util.stream.Stream;
9+
10+
public class CompositePatternDemo
11+
{
12+
public static void main(String[] args)
13+
{
14+
Developer developer = new Developer("Tom", 8000, "Team Leader");
15+
Developer developer2 = new Developer("Sam", 6000, "Senior Developer");
16+
Developer developer3 = new Developer("Bob", 4000, "Developer");
17+
Developer developer4 = new Developer("King", 3000, "Junior Developer");
18+
Developer developer5 = new Developer("Chris", 3000, "Junior Developer");
19+
20+
Salesman salesman = new Salesman("Paul", 5000, "Executive Salesman");
21+
Salesman salesman2 = new Salesman("Crux", 3000, "Salesman");
22+
Salesman salesman3 = new Salesman("Mark", 3000, "Salesman");
23+
24+
Manager manager = new Manager("Max", 6500, "Project Manager");
25+
Manager manager2 = new Manager("Isabelle", 6000, "Marketing Manager");
26+
27+
Stream.of(developer, developer2, developer3, developer4, developer5).forEach(manager::addEmployee);
28+
Stream.of(salesman, salesman2, salesman3).forEach(manager2::addEmployee);
29+
30+
manager.printDetails();
31+
32+
manager2.removeEmployee(salesman2);
33+
manager2.printDetails();
34+
}
35+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Author Steven Yeoh
3+
* Copyright (c) 2019. All rights reserved.
4+
*/
5+
6+
package com.dsl.design.pattern.composite;
7+
8+
public class Developer implements Employee
9+
{
10+
private String name;
11+
private double salary;
12+
private String position;
13+
14+
public Developer(String name, double salary, String position)
15+
{
16+
this.name = name;
17+
this.salary = salary;
18+
this.position = position;
19+
}
20+
21+
@Override
22+
public void printDetails()
23+
{
24+
System.out.println(String.format("Name: %s Salary: %.2f Position: %s", name, salary, position));
25+
}
26+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/*
2+
* Author Steven Yeoh
3+
* Copyright (c) 2019. All rights reserved.
4+
*/
5+
6+
package com.dsl.design.pattern.composite;
7+
8+
public interface Employee
9+
{
10+
void printDetails();
11+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* Author Steven Yeoh
3+
* Copyright (c) 2019. All rights reserved.
4+
*/
5+
6+
package com.dsl.design.pattern.composite;
7+
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
public class Manager implements Employee
12+
{
13+
private String name;
14+
private double salary;
15+
private String position;
16+
private List<Employee> employees;
17+
18+
public Manager(String name, double salary, String position)
19+
{
20+
this.name = name;
21+
this.salary = salary;
22+
this.position = position;
23+
this.employees = new ArrayList<>();
24+
}
25+
26+
public void addEmployee(Employee employee)
27+
{
28+
employees.add(employee);
29+
}
30+
31+
public void removeEmployee(Employee employee)
32+
{
33+
employees.remove(employee);
34+
}
35+
36+
public String getName()
37+
{
38+
return name;
39+
}
40+
41+
public double getSalary()
42+
{
43+
return salary;
44+
}
45+
46+
public String getPosition()
47+
{
48+
return position;
49+
}
50+
51+
public List<Employee> getEmployees()
52+
{
53+
return employees;
54+
}
55+
56+
@Override
57+
public void printDetails()
58+
{
59+
System.out.println("=============== Management ===============");
60+
System.out.println(String.format("Name: %s Salary: %.2f Position: %s", name, salary, position));
61+
System.out.println("=============== Management ===============");
62+
employees.forEach(Employee::printDetails);
63+
System.out.println();
64+
}
65+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Author Steven Yeoh
3+
* Copyright (c) 2019. All rights reserved.
4+
*/
5+
6+
package com.dsl.design.pattern.composite;
7+
8+
public class Salesman implements Employee
9+
{
10+
private String name;
11+
private double salary;
12+
private String position;
13+
14+
public Salesman(String name, double salary, String position)
15+
{
16+
this.name = name;
17+
this.salary = salary;
18+
this.position = position;
19+
}
20+
21+
@Override
22+
public void printDetails()
23+
{
24+
System.out.println(String.format("Name: %s salary: %.2f position: %s", name, salary, position));
25+
}
26+
}

0 commit comments

Comments
 (0)