我正在尝试学习 Java 中的继承和接口(interface)。我有三个不同的类:Customer、SilverCustomer 和 GoldCustomer。 SilverCustomer 和 GoldCustomer 都扩展了 Customer。
在应用程序中,客户通过旅行获得积分。普通客户获得他们前往积分的里程。 SilverCustomer 获得里程 * 1.5,GoldCustomer 获得里程 * 2。
当我创建普通客户 John 时,如何使用方法 downgrade() 和 upgrade() 在普通客户、silvercustomer 和 goldcustomer 之间切换?
class Testfile {
public static void main(String[] args) {
Airline aProgram = new Airline();
Customer john = new Customer("john", 10001); // 10001 is the id number and the status of a customer is normal
aProgram.addMembers(john);
john.update_mileage(12000);
john.upgrade(); //upgrade John to SilverCustomer
john.update_mileage(2000);
aProgram.printAllCustomerMilege();
}
}
最佳答案
对象的类一旦创建就无法更改。
如果您的逻辑取决于客户的类型,您可以使用策略设计模式。在您的示例中,您可以编写如下内容:
interface Strategy {
double getMileageCoefficient();
}
class NormalCustomerStrategy implements Strategy {
public double getMileageCoefficient() {
return 1.0;
}
}
class GoldCustomerStrategy implements Strategy {
public double getMileageCoefficient() {
return 2.0;
}
}
在您的 Customer 类中将有一个私有(private)字段 Strategy 策略;
然后您的升级方法将如下所示:
void upgrade() {
this.strategy = new GoldCustomerStrategy();
}
以及 upgradeMileage 方法:
void upgradeMileage(double mileage) {
this.mileage += strategy.getMileageCoefficient() * mileage;
}
关于java - 如何将客户更改为不同的成员(member)资格? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549048/