`
ootabc
  • 浏览: 108180 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

strategy enum pattern

    博客分类:
  • java
 
阅读更多
enum PayrollDay {
MONDAY(PayType.WEEKDAY), TUESDAY(PayType.WEEKDAY), WEDNESDAY(
PayType.WEEKDAY), THURSDAY(PayType.WEEKDAY), FRIDAY(PayType.WEEKDAY), SATURDAY(
PayType.WEEKEND), SUNDAY(PayType.WEEKEND);
 
private final PayType payType;
 
PayrollDay(PayType payType) {
this.payType = payType;
}
 
double pay(double hoursWorked, double payRate) {
return payType.pay(hoursWorked, payRate);
}
 
// The strategy enum type
private enum PayType {
WEEKDAY {
double overtimePay(double hours, double payRate) {
return hours <= HOURS_PER_SHIFT ? 0 : (hours - HOURS_PER_SHIFT)
* payRate / 2;
}
},
WEEKEND {
double overtimePay(double hours, double payRate) {
return hours * payRate / 2;
}
};
private static final int HOURS_PER_SHIFT = 8;
 
abstract double overtimePay(double hrs, double payRate);
 
double pay(double hoursWorked, double payRate) {
double basePay = hoursWorked * payRate;
return basePay + overtimePay(hoursWorked, payRate);
}
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics