gpt4 book ai didi

java - 需要帮助识别此代码中使用的 'override method' 模式

转载 作者:搜寻专家 更新时间:2023-11-01 02:23:00 24 4
gpt4 key购买 nike

<分区>

以下是我正在进行的项目的简化。

我们有 Talker niceTalker“早上好!我叫乔”。然后我们有一个精神 split 症 rudeTalker,他说“他是我”

我花了一段时间才理解代码的作用。对我来说,这似乎是一种覆盖 Talkertalk() 方法的非常复杂的方法。此外,TalkModifierCommand pattern 中用作命令(未显示)。

为什么要采用这种方式,而不是说通过继承实现多态呢?这是已知模式吗?

public interface Talker {
String getName();
void talk();
}

-

public interface TalkModifier {
public Talker modify(Talker talker);
}

-

class NiceGuy implements Talker {
@Override
public void talk() {
System.out.println("Good morning! My name is " + getName() +".");
}
@Override
public String getName() {
return "Joe";
}
}

public class Application {

public static void main(String[] args) {
Talker niceTalker = new NiceGuy();

TalkModifier rudeTalker = new TalkModifier() {
public Talker modify(final Talker talker) {
return new Talker() {
@Override
public void talk() {
System.out.println("He is me.");
}
@Override
public String getName() {
return talker.getName();
}
};
}
};

niceTalker.talk();
System.out.println();
rudeTalker.modify(niceTalker).talk();
}
}

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