SHOW:
|
|
- or go back to the newest paste.
1 | interface Salary { | |
2 | - | private int salary; |
2 | + | public double getValue() { ... } |
3 | } | |
4 | - | public int getSalary(){ |
4 | + | |
5 | - | if salary == 0 //lazy load |
5 | + | private Salary salary; |
6 | - | calculateSalary(); |
6 | + | |
7 | - | |
7 | + | public Salary getSalary(){ |
8 | if(!salary.isLoaded()) | |
9 | salary = new LazySalary(this); | |
10 | return salary | |
11 | - | public void calculateSalary(){ |
11 | + | |
12 | - | ... |
12 | + | |
13 | private class LazySalary implements Salary { | |
14 | public double getValue() { | |
15 | Employee.this.calculateSalary(); | |
16 | return Employee.this.getSalary().getValue(); | |
17 | } | |
18 | } | |
19 | ||
20 | public class ConcreteSalary implements Salary { | |
21 | ... | |
22 | } | |
23 | ||
24 | private void calculateSalary(){ | |
25 | ... // calcula mesmo o valor | |
26 | salary = new ConcreteSalary(value); | |
27 | } | |
28 | } |