gpt4 book ai didi

java - 如何使我的方法更加面向对象?

转载 作者:行者123 更新时间:2023-12-04 10:56:49 24 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




您在下面看到的这段代码是我的炸弹人学校项目中的一种方法。我们有一些教程视频让我们开始,视频中的老师提到我们应该让这段代码更加面向对象。我没有想到如何使它更加面向对象。

public void handleMessage(Message message) {
// TODO: Make this more Object Oriented
if (message instanceof PlayerJoined) {
PlayerJoinedControl control = ControlFactory.instance().createPlayerJoinedControl();
control.playerJoined((PlayerJoined)message);
} else if (message instanceof ErrorMessage) {
// TODO: Create ErrorMessageControl, make it show message in console of game
System.out.println("ERROR: " + ((ErrorMessage) message).getErrorMessage());
} else if (message instanceof StartGame) {
// TODO: ADD METHOD IMPLEMENTATION
}
}

我对社区的问题是我如何才能使它更加面向对象。我愿意接受建议。

最佳答案

您可以使用 Ploymorphism 并在每个子类中实现 handleMessage。例子:

PlayerJoinedHandler extends MessageHandler {

public void handleMessage(PlayerJoined message) {
PlayerJoinedControl control = ControlFactory.instance().createPlayerJoinedControl();
control.playerJoined((PlayerJoined)message);

}

}

ErrorMessageHandler extends MessageHandler {

public void handleMessage(ErrorMessage message) {
System.out.println("ERROR: " + ((ErrorMessage) message).getErrorMessage());
}

}

使用 Java 8,您实际上可以对这些类使用 lambda,并且只需一个接口(interface):
interface MessageHandler<T extends Message> {

public void handleMessage(T message);

}

(t)->{
PlayerJoinedControl control = ControlFactory.instance().createPlayerJoinedControl();
control.playerJoined((PlayerJoined)message);
}

关于java - 如何使我的方法更加面向对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59118993/

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