说明
某航空公司的会员积分系统将其会员划分为:普卡(Basic)、银卡(Silver)和金卡(Gold)三个等级。非会员(NonMember)可以申请成为普卡会员。会员的等级根据其一年内累积的里程数进行调整。
描述会员等级调整的状态图如下图所示。
现采用状态(State)模式实现上述场景,其类图如下图所示。
Java代码
import java.util.*; //把util这个包下的全部类导入到程序中
//*表示的是通配符,包括util的所有类
abstract class CState {
//定义抽象类CState
public int flyMiles; // 里程数
public abstract double travel(int miles, CFrequentFlyer context); //定义抽象方法travel,根据累积里程数调整会员等级
}
class CNonMember extends CState {
//非会员
public double travel(int miles, CFrequentFlyer context) {
System.out.println("Your travel will not account for points");
return miles; //不累积里程数
}
}