gpt4 book ai didi

java - 如何将客户更改为不同的成员(member)资格? java

转载 作者:行者123 更新时间:2023-11-29 09:50:45 28 4
gpt4 key购买 nike

我正在尝试学习 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com