/**
* Created by
* Describe 策略枚举(枚举类里套一层枚举),工作日1倍工资,节假日2倍工资
* 枚举类里的枚举类型其实就是该类的一个实例化
*/
public enum SalaryPay {
//星期的枚举
MONDAY(PayType.WORK),
TUESDAY(PayType.WORK),
WEDNESDAY(PayType.WORK),
THURSDAY(PayType.WORK),
FRIDY(PayType.WORK),
SATRUDAY(PayType.REST),
SUNDAY(PayType.REST);
private PayType payType;
SalaryPay(PayType payType) {
this.payType = payType;
}
//支付函数
double pay(double salary) {
return payType.pay(salary);
}
//支付倍数的枚举
private enum PayType {
WORK {
@Override
double pay(double salary) {
return salary;
}
},
REST {
@Override
double pay(double salary) {
return DOUBLE * salary;
}
};
private static final int DOUBLE = 2;
//支付函数
abstract double pay(double salary);
}
public static void main(String[] args) {
final double salary = 10000;//基本工资
System.out.println("周一的工资是:" + SalaryPay.MONDAY.pay(salary));
System.out.println("周日的工资是:" + SalaryPay.SUNDAY.pay(salary));
}
}