关于mvc模式我想我是这样做的,客户端就是view,command就是control
关于vistor我需要想一下先,不过“ajoo跟椅子说'对不起'”这些语句是从数据库中读取的,我希望我的mud通过修改数据库就可以变成另外一个mud
我的command是这样实现的(稍作简化):
public interface Command
{
public boolean action ( String cmdParams) ;
}
/**
* 交谈命令
*/
public class TalkToCmd extends AbstractCmd
{
protected boolean action(String cmdParams)
{ //conn是action带的参数,我省去了
conn.getUserControler().talkTo(cmdParams);
return true;
}
}
public class CommandDispatch
{
private Map responseMap = new HashMap () ;
public void putCommand ( String cmdString , Command cmd )
{
responseMap.put ( cmdString.toUpperCase () , cmd ) ;
}
public boolean action ( String cmdLine)
{
//分解命令行,比如用户发来的是talkto aaa,那么就分成
//cmdString=talkto;cmdParams=aaa
return internalAction (cmdString , cmdParams ) ;
}
protected boolean internalAction (String cmdString ,String cmdParams )
{
boolean result ;
//find command to do
Command cmd = ( Command ) responseMap.get ( cmdString ) ;
if ( cmd != null )
{
result = cmd.action ( cmdParams ) ;
}
return result ;
}
}
public class JMudCommandDispatch
extends CommandDispatch
{
...
public static String CMD_TALKTO = "TALKTO" ;
//Login
public JMudCommandDispatch ()
{
//用户命令
...
putCommand ( CMD_TALKTO , new TalkToCmd () ) ;
putCommand ( CMD_GIVETO , new GiveToCmd () ) ;
}
public boolean action ( String cmdLine )
{
return super.action ( cmdLine ) ;
}
}