Java 如果所有对象都返回false,如何触发某些内容
可能会有类似的问题出现,但我不知道我要找的确切词语 我有一个名为Java 如果所有对象都返回false,如何触发某些内容,java,oop,Java,Oop,可能会有类似的问题出现,但我不知道我要找的确切词语 我有一个名为Command package loopturn.loanbot.main; 导入net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent; 导入net.dv8tion.jda.api.hooks.ListenerAdapter; 公共类命令扩展ListenerAdapter实现CommandInterface{ 私有字符串命令; 私人命令执行人; 公共命令
Command
package loopturn.loanbot.main;
导入net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
导入net.dv8tion.jda.api.hooks.ListenerAdapter;
公共类命令扩展ListenerAdapter实现CommandInterface{
私有字符串命令;
私人命令执行人;
公共命令(字符串命令、命令执行器){
this.command=命令;
this.executor=执行人;
}
公共布尔onCommand(){
返回null;
}
已接收公共无效OnGuildMessage(GuildMessageReceivedEvent事件){
字符串[]messageSplitBySpace=event.getMessage().getContentRaw().split(“”);
if(messageSplitBySpace[0].startsWith(“!”){
if(messageSplitBySpace[0].equalsIgnoreCase(“!”+命令)){
执行人onCall(事件);
}
}
}
}
我为每个命令创建一个新命令。看起来很简单,对吧。那么,当一个命令运行但不存在时(一个命令通过发送一条以“”!“
”开头的消息开始),它告诉他们它不存在,我该怎么做呢
Command c = CommandFactory.discover(event)
c.execute()
我有一个想法,创建另一个类,接受命令,然后在聊天时调用命令,但感觉这不是正确的解决方案。我想看看是否有人能想出更好的方法来做这件事。您可以拥有一个查找表,并在未找到命令时返回默认值
execute( String command ) {
Command c = map.get(command)
if (c = null) {
c = new EmptyCommand()
}
c.run();
}
这样,如果找到命令,就执行它,如果没有,就执行一个不做任何事情的
EmptyCommand
(或者在您的情况下,向用户显示“Invalid command”消息或类似消息)。我建议创建一个独立的工厂,用于根据事件.getMessage()
发现命令。当事件包含“!”时,此工厂将生成一个特殊命令,称为“NaNCommand”。在这个命令上,您可以处理调用不存在的命令的所有情况
Command c = CommandFactory.discover(event)
c.execute()
目标不是什么都不做;“当命令运行但不存在时……它会告诉他们它不存在。”