Skip to content

Commit e87116c

Browse files
Implementing Decorator design pattern
1 parent 71aed16 commit e87116c

8 files changed

Lines changed: 129 additions & 0 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package design.pattern.decorator;
2+
3+
public class Consultant extends Employee {
4+
5+
public Consultant() {
6+
description = "Consultant";
7+
}
8+
9+
@Override
10+
public double getSalary() {
11+
return 70000;
12+
}
13+
14+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package design.pattern.decorator;
2+
3+
public abstract class Employee {
4+
5+
public String description;
6+
7+
public Employee() {
8+
description = "General employee details";
9+
}
10+
11+
abstract public double getSalary();
12+
13+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package design.pattern.decorator;
2+
3+
public class EmployeeCertification extends EmployeeQualification {
4+
5+
Employee employee;
6+
7+
public EmployeeCertification(Employee employee) {
8+
this.employee = employee;
9+
}
10+
11+
@Override
12+
public String getDescription() {
13+
return " Employee Certification ";
14+
}
15+
16+
@Override
17+
public double getSalary() {
18+
return 30000 + employee.getSalary();
19+
}
20+
21+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package design.pattern.decorator;
2+
3+
public abstract class EmployeeQualification extends Employee{
4+
5+
public abstract String getDescription();
6+
7+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package design.pattern.decorator;
2+
3+
public class Engineer extends Employee {
4+
5+
public Engineer() {
6+
description = "Engineer";
7+
}
8+
9+
@Override
10+
public double getSalary() {
11+
return 60000;
12+
}
13+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package design.pattern.decorator;
2+
3+
public class Manager extends Employee {
4+
5+
public Manager() {
6+
description = "Manager";
7+
}
8+
9+
@Override
10+
public double getSalary() {
11+
return 80000;
12+
}
13+
14+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package design.pattern.decorator;
2+
3+
public class TestPattern {
4+
5+
/**
6+
* @param args
7+
*/
8+
public static void main(String[] args) {
9+
10+
Employee employee = new Engineer();
11+
employee = new EmployeeCertification(employee);
12+
employee = new WorkExperience(employee);
13+
14+
System.out.println(employee.description + " " + employee.getSalary());
15+
16+
Employee employee2 = new Consultant();
17+
employee2 = new WorkExperience(new EmployeeCertification(employee2));
18+
19+
System.out.println(employee2.description + " " + employee2.getSalary());
20+
21+
System.out.println("PM salary = "
22+
+ new WorkExperience(new EmployeeCertification(new Manager()))
23+
.getSalary());
24+
25+
}
26+
27+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package design.pattern.decorator;
2+
3+
public class WorkExperience extends EmployeeQualification {
4+
5+
Employee employee;
6+
7+
public WorkExperience(Employee employee) {
8+
this.employee = employee;
9+
}
10+
11+
@Override
12+
public String getDescription() {
13+
return "Add Work experience.";
14+
}
15+
16+
@Override
17+
public double getSalary() {
18+
return 20000 + employee.getSalary();
19+
}
20+
}

0 commit comments

Comments
 (0)