gpt4 book ai didi

java - `instanceof` 运算符是否违反里氏替换原则?

转载 作者:行者123 更新时间:2023-12-04 09:35:43 35 4
gpt4 key购买 nike

例如,我有 Currency 和处理 Currency 各种实现的 Exchange。我想对窗帘货币有额外的汇率,我这样做

interface Currency { double rate();}
interface Exchange { double convert(Currency currency, double money); }
class PrivateBank implements Exchange {
@Override
public double convert(Currency currency, double money) {
double extra_rate = 1.0;
if (currency instanceof CanadaDollar) { /// ?
extra_rate = 1.05;
}
return money * currency.rate() * extra_rate;
}
}

这里是否违反了LSP?

最佳答案

没有。 Liskov 替换原则是关于子类型忠实地展示其父类(super class)型的所有属性。它绝不禁止其他代码以不同方式处理同一类型的不同子类型。

您的示例代码有点臭,但不是因为与 LSP 有任何冲突。

关于java - `instanceof` 运算符是否违反里氏替换原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62602914/

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