File tree Expand file tree Collapse file tree
Basics/Design Pattern/decorator Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 1+ package design .pattern .decorator ;
2+
3+ public abstract class EmployeeQualification extends Employee {
4+
5+ public abstract String getDescription ();
6+
7+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments