[英]How do i make my method more Object Oriented? [closed]
您在下面看到的这段代码是我的炸弹人学校项目中的一种方法。 我们得到了一些教程视频来帮助我们入门,视频中的老师提到我们应该使这段代码更加面向对象。 关于如何使它更加面向对象,我没有想到任何事情。
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 MessageHandler<T extends Message> {
public void handleMessage(T message);
}
(t)->{
PlayerJoinedControl control = ControlFactory.instance().createPlayerJoinedControl();
control.playerJoined((PlayerJoined)message);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.